/* ppc adaptive assembler

	Do not include any BINJA stuff in here (includes like binaryninjaapi.h,
	calls like LogDebug(), etc.) so that this can be easily compiled and
	linked against test_asm.cpp for timing and stressing.
*/

/* */
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <string.h>
#include <time.h>

/* c++ stuff */
#include <map>
#include <string>
#include <vector>
using namespace std;

/* capstone stuff */
#include "capstone/capstone.h"
#include "disassembler.h"

#define DEBUG 0
#if DEBUG
#define MYLOG printf
#else
#define MYLOG(...) while(0);
#endif


// #define ENABLE_CAPSTONE

#include "assembler.h"

/*****************************************************************************/
/* precomputed stuff */
/*****************************************************************************/

struct info {
	uint32_t seed; /* start parent */
	uint32_t mask; /* which bits to mutate */
};

static const map<string_view, info> lookup = {
{               "tdi NUM , GPR , NUM",{0x0800000A,0x03FFFFFF}}, // 000010xxxxxxxxxxxxxxxxxxxxxxxxxx  tdi 0, r0, 0xa
{                  "tdlgti GPR , NUM",{0x08200000,0x001FFFFF}}, // 00001000001xxxxxxxxxxxxxxxxxxxxx  tdlgti r0, 0
{                  "tdllti GPR , NUM",{0x08400000,0x001FFFFF}}, // 00001000010xxxxxxxxxxxxxxxxxxxxx  tdllti r0, 0
{                   "tdeqi GPR , NUM",{0x08800000,0x001FFFFF}}, // 00001000100xxxxxxxxxxxxxxxxxxxxx  tdeqi r0, 0
{                   "tdgti GPR , NUM",{0x09000000,0x001FFFFF}}, // 00001001000xxxxxxxxxxxxxxxxxxxxx  tdgti r0, 0
{                   "tdlti GPR , NUM",{0x0A000000,0x001FFFFF}}, // 00001010000xxxxxxxxxxxxxxxxxxxxx  tdlti r0, 0
{                   "tdnei GPR , NUM",{0x0B000000,0x001FFFFF}}, // 00001011000xxxxxxxxxxxxxxxxxxxxx  tdnei r0, 0
{                    "tdui GPR , NUM",{0x0BE00000,0x001FFFFF}}, // 00001011111xxxxxxxxxxxxxxxxxxxxx  tdui r0, 0
{               "twi NUM , GPR , NUM",{0x0C000000,0x03FFFFFF}}, // 000011xxxxxxxxxxxxxxxxxxxxxxxxxx  twi 0, r0, 0
{                  "twlgti GPR , NUM",{0x0C200000,0x001FFFFF}}, // 00001100001xxxxxxxxxxxxxxxxxxxxx  twlgti r0, 0
{                  "twllti GPR , NUM",{0x0C400000,0x001FFFFF}}, // 00001100010xxxxxxxxxxxxxxxxxxxxx  twllti r0, 0
{                   "tweqi GPR , NUM",{0x0C800000,0x001FFFFF}}, // 00001100100xxxxxxxxxxxxxxxxxxxxx  tweqi r0, 0
{                   "twgti GPR , NUM",{0x0D000000,0x001FFFFF}}, // 00001101000xxxxxxxxxxxxxxxxxxxxx  twgti r0, 0
{                   "twlti GPR , NUM",{0x0E000000,0x001FFFFF}}, // 00001110000xxxxxxxxxxxxxxxxxxxxx  twlti r0, 0
{                   "twnei GPR , NUM",{0x0F000000,0x001FFFFF}}, // 00001111000xxxxxxxxxxxxxxxxxxxxx  twnei r0, 0
{                    "twui GPR , NUM",{0x0FE00000,0x001FFFFF}}, // 00001111111xxxxxxxxxxxxxxxxxxxxx  twui r0, 0
{        "vaddubm VREG , VREG , VREG",{0x10000000,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx00000000000  vaddubm v0, v0, v0
{         "vmaxub VREG , VREG , VREG",{0x10000002,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx00000000010  vmaxub v0, v0, v0
{           "vrlb VREG , VREG , VREG",{0x10000004,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx00000000100  vrlb v0, v0, v0
{       "vcmpequb VREG , VREG , VREG",{0x10000006,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx00000000110  vcmpequb v0, v0, v0
{        "vmuloub VREG , VREG , VREG",{0x10000008,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx00000001000  vmuloub v0, v0, v0
{         "vaddfp VREG , VREG , VREG",{0x1000000A,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx00000001010  vaddfp v0, v0, v0
{         "vmrghb VREG , VREG , VREG",{0x1000000C,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx00000001100  vmrghb v0, v0, v0
{        "vpkuhum VREG , VREG , VREG",{0x1000000E,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx00000001110  vpkuhum v0, v0, v0
{"vmhaddshs VREG , VREG , VREG , VREG",{0x10000020,0x03FFFFC0}}, // 000100xxxxxxxxxxxxxxxxxxxx100000  vmhaddshs v0, v0, v0, v0
{"vmhraddshs VREG , VREG , VREG , VREG",{0x10000021,0x03FFFFC0}}, // 000100xxxxxxxxxxxxxxxxxxxx100001  vmhraddshs v0, v0, v0, v0
{"vmladduhm VREG , VREG , VREG , VREG",{0x10000022,0x03FFFFC0}}, // 000100xxxxxxxxxxxxxxxxxxxx100010  vmladduhm v0, v0, v0, v0
{"vmsumubm VREG , VREG , VREG , VREG",{0x10000024,0x03FFFFC0}}, // 000100xxxxxxxxxxxxxxxxxxxx100100  vmsumubm v0, v0, v0, v0
{"vmsummbm VREG , VREG , VREG , VREG",{0x10000025,0x03FFFFC0}}, // 000100xxxxxxxxxxxxxxxxxxxx100101  vmsummbm v0, v0, v0, v0
{"vmsumuhm VREG , VREG , VREG , VREG",{0x10000026,0x03FFFFC0}}, // 000100xxxxxxxxxxxxxxxxxxxx100110  vmsumuhm v0, v0, v0, v0
{"vmsumuhs VREG , VREG , VREG , VREG",{0x10000027,0x03FFFFC0}}, // 000100xxxxxxxxxxxxxxxxxxxx100111  vmsumuhs v0, v0, v0, v0
{"vmsumshm VREG , VREG , VREG , VREG",{0x10000028,0x03FFFFC0}}, // 000100xxxxxxxxxxxxxxxxxxxx101000  vmsumshm v0, v0, v0, v0
{"vmsumshs VREG , VREG , VREG , VREG",{0x10000029,0x03FFFFC0}}, // 000100xxxxxxxxxxxxxxxxxxxx101001  vmsumshs v0, v0, v0, v0
{    "vsel VREG , VREG , VREG , VREG",{0x1000002A,0x03FFFFC0}}, // 000100xxxxxxxxxxxxxxxxxxxx101010  vsel v0, v0, v0, v0
{   "vperm VREG , VREG , VREG , VREG",{0x1000002B,0x03FFFFC0}}, // 000100xxxxxxxxxxxxxxxxxxxx101011  vperm v0, v0, v0, v0
{   "vsldoi VREG , VREG , VREG , NUM",{0x1000002C,0x03FFFBC0}}, // 000100xxxxxxxxxxxxxxx0xxxx101100  vsldoi v0, v0, v0, 0
{ "vmaddfp VREG , VREG , VREG , VREG",{0x1000002E,0x03FFFFC0}}, // 000100xxxxxxxxxxxxxxxxxxxx101110  vmaddfp v0, v0, v0, v0
{"vnmsubfp VREG , VREG , VREG , VREG",{0x1000002F,0x03FFFFC0}}, // 000100xxxxxxxxxxxxxxxxxxxx101111  vnmsubfp v0, v0, v0, v0
{        "vadduhm VREG , VREG , VREG",{0x10000040,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx00001000000  vadduhm v0, v0, v0
{         "vmaxuh VREG , VREG , VREG",{0x10000042,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx00001000010  vmaxuh v0, v0, v0
{           "vrlh VREG , VREG , VREG",{0x10000044,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx00001000100  vrlh v0, v0, v0
{       "vcmpequh VREG , VREG , VREG",{0x10000046,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx00001000110  vcmpequh v0, v0, v0
{        "vmulouh VREG , VREG , VREG",{0x10000048,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx00001001000  vmulouh v0, v0, v0
{         "vsubfp VREG , VREG , VREG",{0x1000004A,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx00001001010  vsubfp v0, v0, v0
{         "vmrghh VREG , VREG , VREG",{0x1000004C,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx00001001100  vmrghh v0, v0, v0
{        "vpkuwum VREG , VREG , VREG",{0x1000004E,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx00001001110  vpkuwum v0, v0, v0
{        "vadduwm VREG , VREG , VREG",{0x10000080,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx00010000000  vadduwm v0, v0, v0
{         "vmaxuw VREG , VREG , VREG",{0x10000082,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx00010000010  vmaxuw v0, v0, v0
{           "vrlw VREG , VREG , VREG",{0x10000084,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx00010000100  vrlw v0, v0, v0
{       "vcmpequw VREG , VREG , VREG",{0x10000086,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx00010000110  vcmpequw v0, v0, v0
{         "vmrghw VREG , VREG , VREG",{0x1000008C,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx00010001100  vmrghw v0, v0, v0
{        "vpkuhus VREG , VREG , VREG",{0x1000008E,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx00010001110  vpkuhus v0, v0, v0
{       "vcmpeqfp VREG , VREG , VREG",{0x100000C6,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx00011000110  vcmpeqfp v0, v0, v0
{        "vpkuwus VREG , VREG , VREG",{0x100000CE,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx00011001110  vpkuwus v0, v0, v0
{         "vmaxsb VREG , VREG , VREG",{0x10000102,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx00100000010  vmaxsb v0, v0, v0
{           "vslb VREG , VREG , VREG",{0x10000104,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx00100000100  vslb v0, v0, v0
{        "vmulosb VREG , VREG , VREG",{0x10000108,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx00100001000  vmulosb v0, v0, v0
{                 "vrefp VREG , VREG",{0x1000010A,0x03E0F800}}, // 000100xxxxx00000xxxxx00100001010  vrefp v0, v0
{         "vmrglb VREG , VREG , VREG",{0x1000010C,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx00100001100  vmrglb v0, v0, v0
{        "vpkshus VREG , VREG , VREG",{0x1000010E,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx00100001110  vpkshus v0, v0, v0
{         "vmaxsh VREG , VREG , VREG",{0x10000142,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx00101000010  vmaxsh v0, v0, v0
{           "vslh VREG , VREG , VREG",{0x10000144,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx00101000100  vslh v0, v0, v0
{        "vmulosh VREG , VREG , VREG",{0x10000148,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx00101001000  vmulosh v0, v0, v0
{             "vrsqrtefp VREG , VREG",{0x1000014A,0x03E0F800}}, // 000100xxxxx00000xxxxx00101001010  vrsqrtefp v0, v0
{         "vmrglh VREG , VREG , VREG",{0x1000014C,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx00101001100  vmrglh v0, v0, v0
{        "vpkswus VREG , VREG , VREG",{0x1000014E,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx00101001110  vpkswus v0, v0, v0
{        "vaddcuw VREG , VREG , VREG",{0x10000180,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx00110000000  vaddcuw v0, v0, v0
{         "vmaxsw VREG , VREG , VREG",{0x10000182,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx00110000010  vmaxsw v0, v0, v0
{           "vslw VREG , VREG , VREG",{0x10000184,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx00110000100  vslw v0, v0, v0
{              "vexptefp VREG , VREG",{0x1000018A,0x03E0F800}}, // 000100xxxxx00000xxxxx00110001010  vexptefp v0, v0
{         "vmrglw VREG , VREG , VREG",{0x1000018C,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx00110001100  vmrglw v0, v0, v0
{        "vpkshss VREG , VREG , VREG",{0x1000018E,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx00110001110  vpkshss v0, v0, v0
{            "vsl VREG , VREG , VREG",{0x100001C4,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx00111000100  vsl v0, v0, v0
{       "vcmpgefp VREG , VREG , VREG",{0x100001C6,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx00111000110  vcmpgefp v0, v0, v0
{               "vlogefp VREG , VREG",{0x100001CA,0x03E0F800}}, // 000100xxxxx00000xxxxx00111001010  vlogefp v0, v0
{        "vpkswss VREG , VREG , VREG",{0x100001CE,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx00111001110  vpkswss v0, v0, v0
{        "vaddubs VREG , VREG , VREG",{0x10000200,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx01000000000  vaddubs v0, v0, v0
{         "vminub VREG , VREG , VREG",{0x10000202,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx01000000010  vminub v0, v0, v0
{           "vsrb VREG , VREG , VREG",{0x10000204,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx01000000100  vsrb v0, v0, v0
{       "vcmpgtub VREG , VREG , VREG",{0x10000206,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx01000000110  vcmpgtub v0, v0, v0
{        "vmuleub VREG , VREG , VREG",{0x10000208,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx01000001000  vmuleub v0, v0, v0
{                 "vrfin VREG , VREG",{0x1000020A,0x03E0F800}}, // 000100xxxxx00000xxxxx01000001010  vrfin v0, v0
{          "vspltb VREG , VREG , NUM",{0x1000020C,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx01000001100  vspltb v0, v0, 0
{               "vupkhsb VREG , VREG",{0x1000020E,0x03E0F800}}, // 000100xxxxx00000xxxxx01000001110  vupkhsb v0, v0
{        "vadduhs VREG , VREG , VREG",{0x10000240,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx01001000000  vadduhs v0, v0, v0
{         "vminuh VREG , VREG , VREG",{0x10000242,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx01001000010  vminuh v0, v0, v0
{           "vsrh VREG , VREG , VREG",{0x10000244,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx01001000100  vsrh v0, v0, v0
{       "vcmpgtuh VREG , VREG , VREG",{0x10000246,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx01001000110  vcmpgtuh v0, v0, v0
{        "vmuleuh VREG , VREG , VREG",{0x10000248,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx01001001000  vmuleuh v0, v0, v0
{                 "vrfiz VREG , VREG",{0x1000024A,0x03E0F800}}, // 000100xxxxx00000xxxxx01001001010  vrfiz v0, v0
{          "vsplth VREG , VREG , NUM",{0x1000024C,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx01001001100  vsplth v0, v0, 0
{               "vupkhsh VREG , VREG",{0x1000024E,0x03E0F800}}, // 000100xxxxx00000xxxxx01001001110  vupkhsh v0, v0
{        "vadduws VREG , VREG , VREG",{0x10000280,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx01010000000  vadduws v0, v0, v0
{         "vminuw VREG , VREG , VREG",{0x10000282,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx01010000010  vminuw v0, v0, v0
{           "vsrw VREG , VREG , VREG",{0x10000284,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx01010000100  vsrw v0, v0, v0
{       "vcmpgtuw VREG , VREG , VREG",{0x10000286,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx01010000110  vcmpgtuw v0, v0, v0
{                 "vrfip VREG , VREG",{0x1000028A,0x03E0F800}}, // 000100xxxxx00000xxxxx01010001010  vrfip v0, v0
{          "vspltw VREG , VREG , NUM",{0x1000028C,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx01010001100  vspltw v0, v0, 0
{               "vupklsb VREG , VREG",{0x1000028E,0x03E0F800}}, // 000100xxxxx00000xxxxx01010001110  vupklsb v0, v0
{            "vsr VREG , VREG , VREG",{0x100002C4,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx01011000100  vsr v0, v0, v0
{       "vcmpgtfp VREG , VREG , VREG",{0x100002C6,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx01011000110  vcmpgtfp v0, v0, v0
{                 "vrfim VREG , VREG",{0x100002CA,0x03E0F800}}, // 000100xxxxx00000xxxxx01011001010  vrfim v0, v0
{               "vupklsh VREG , VREG",{0x100002CE,0x03E0F800}}, // 000100xxxxx00000xxxxx01011001110  vupklsh v0, v0
{        "vaddsbs VREG , VREG , VREG",{0x10000300,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx01100000000  vaddsbs v0, v0, v0
{         "vminsb VREG , VREG , VREG",{0x10000302,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx01100000010  vminsb v0, v0, v0
{          "vsrab VREG , VREG , VREG",{0x10000304,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx01100000100  vsrab v0, v0, v0
{       "vcmpgtsb VREG , VREG , VREG",{0x10000306,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx01100000110  vcmpgtsb v0, v0, v0
{        "vmulesb VREG , VREG , VREG",{0x10000308,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx01100001000  vmulesb v0, v0, v0
{           "vcfux VREG , VREG , NUM",{0x1000030A,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx01100001010  vcfux v0, v0, 0
{               "vspltisb VREG , NUM",{0x1000030C,0x03FF0000}}, // 000100xxxxxxxxxx0000001100001100  vspltisb v0, 0
{          "vpkpx VREG , VREG , VREG",{0x1000030E,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx01100001110  vpkpx v0, v0, v0
{        "vaddshs VREG , VREG , VREG",{0x10000340,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx01101000000  vaddshs v0, v0, v0
{         "vminsh VREG , VREG , VREG",{0x10000342,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx01101000010  vminsh v0, v0, v0
{          "vsrah VREG , VREG , VREG",{0x10000344,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx01101000100  vsrah v0, v0, v0
{       "vcmpgtsh VREG , VREG , VREG",{0x10000346,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx01101000110  vcmpgtsh v0, v0, v0
{        "vmulesh VREG , VREG , VREG",{0x10000348,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx01101001000  vmulesh v0, v0, v0
{           "vcfsx VREG , VREG , NUM",{0x1000034A,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx01101001010  vcfsx v0, v0, 0
{               "vspltish VREG , NUM",{0x1000034C,0x03FF0000}}, // 000100xxxxxxxxxx0000001101001100  vspltish v0, 0
{               "vupkhpx VREG , VREG",{0x1000034E,0x03E0F800}}, // 000100xxxxx00000xxxxx01101001110  vupkhpx v0, v0
{        "vaddsws VREG , VREG , VREG",{0x10000380,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx01110000000  vaddsws v0, v0, v0
{         "vminsw VREG , VREG , VREG",{0x10000382,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx01110000010  vminsw v0, v0, v0
{          "vsraw VREG , VREG , VREG",{0x10000384,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx01110000100  vsraw v0, v0, v0
{       "vcmpgtsw VREG , VREG , VREG",{0x10000386,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx01110000110  vcmpgtsw v0, v0, v0
{          "vctuxs VREG , VREG , NUM",{0x1000038A,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx01110001010  vctuxs v0, v0, 0
{               "vspltisw VREG , NUM",{0x1000038C,0x03FF0000}}, // 000100xxxxxxxxxx0000001110001100  vspltisw v0, 0
{        "vcmpbfp VREG , VREG , VREG",{0x100003C6,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx01111000110  vcmpbfp v0, v0, v0
{          "vctsxs VREG , VREG , NUM",{0x100003CA,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx01111001010  vctsxs v0, v0, 0
{               "vupklpx VREG , VREG",{0x100003CE,0x03E0F800}}, // 000100xxxxx00000xxxxx01111001110  vupklpx v0, v0
{        "vsububm VREG , VREG , VREG",{0x10000400,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx10000000000  vsububm v0, v0, v0
{         "vavgub VREG , VREG , VREG",{0x10000402,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx10000000010  vavgub v0, v0, v0
{           "vand VREG , VREG , VREG",{0x10000404,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx10000000100  vand v0, v0, v0
{     "vcmpequb . VREG , VREG , VREG",{0x10000406,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx10000000110  vcmpequb. v0, v0, v0
{         "vmaxfp VREG , VREG , VREG",{0x1000040A,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx10000001010  vmaxfp v0, v0, v0
{           "vslo VREG , VREG , VREG",{0x1000040C,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx10000001100  vslo v0, v0, v0
{        "vsubuhm VREG , VREG , VREG",{0x10000440,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx10001000000  vsubuhm v0, v0, v0
{         "vavguh VREG , VREG , VREG",{0x10000442,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx10001000010  vavguh v0, v0, v0
{          "vandc VREG , VREG , VREG",{0x10000444,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx10001000100  vandc v0, v0, v0
{     "vcmpequh . VREG , VREG , VREG",{0x10000446,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx10001000110  vcmpequh. v0, v0, v0
{         "vminfp VREG , VREG , VREG",{0x1000044A,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx10001001010  vminfp v0, v0, v0
{           "vsro VREG , VREG , VREG",{0x1000044C,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx10001001100  vsro v0, v0, v0
{        "vsubuwm VREG , VREG , VREG",{0x10000480,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx10010000000  vsubuwm v0, v0, v0
{         "vavguw VREG , VREG , VREG",{0x10000482,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx10010000010  vavguw v0, v0, v0
{            "vor VREG , VREG , VREG",{0x10000484,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx10010000100  vor v0, v0, v0
{     "vcmpequw . VREG , VREG , VREG",{0x10000486,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx10010000110  vcmpequw. v0, v0, v0
{           "vxor VREG , VREG , VREG",{0x100004C4,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx10011000100  vxor v0, v0, v0
{     "vcmpeqfp . VREG , VREG , VREG",{0x100004C6,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx10011000110  vcmpeqfp. v0, v0, v0
{         "vavgsb VREG , VREG , VREG",{0x10000502,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx10100000010  vavgsb v0, v0, v0
{           "vnor VREG , VREG , VREG",{0x10000504,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx10100000100  vnor v0, v0, v0
{         "vavgsh VREG , VREG , VREG",{0x10000542,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx10101000010  vavgsh v0, v0, v0
{        "vsubcuw VREG , VREG , VREG",{0x10000580,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx10110000000  vsubcuw v0, v0, v0
{         "vavgsw VREG , VREG , VREG",{0x10000582,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx10110000010  vavgsw v0, v0, v0
{     "vcmpgefp . VREG , VREG , VREG",{0x100005C6,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx10111000110  vcmpgefp. v0, v0, v0
{        "vsububs VREG , VREG , VREG",{0x10000600,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx11000000000  vsububs v0, v0, v0
{                       "mfvscr VREG",{0x10000604,0x03E00000}}, // 000100xxxxx000000000011000000100  mfvscr v0
{     "vcmpgtub . VREG , VREG , VREG",{0x10000606,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx11000000110  vcmpgtub. v0, v0, v0
{       "vsum4ubs VREG , VREG , VREG",{0x10000608,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx11000001000  vsum4ubs v0, v0, v0
{        "vsubuhs VREG , VREG , VREG",{0x10000640,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx11001000000  vsubuhs v0, v0, v0
{                       "mtvscr VREG",{0x10000644,0x0000F800}}, // 0001000000000000xxxxx11001000100  mtvscr v0
{     "vcmpgtuh . VREG , VREG , VREG",{0x10000646,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx11001000110  vcmpgtuh. v0, v0, v0
{       "vsum4shs VREG , VREG , VREG",{0x10000648,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx11001001000  vsum4shs v0, v0, v0
{        "vsubuws VREG , VREG , VREG",{0x10000680,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx11010000000  vsubuws v0, v0, v0
{     "vcmpgtuw . VREG , VREG , VREG",{0x10000686,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx11010000110  vcmpgtuw. v0, v0, v0
{       "vsum2sws VREG , VREG , VREG",{0x10000688,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx11010001000  vsum2sws v0, v0, v0
{     "vcmpgtfp . VREG , VREG , VREG",{0x100006C6,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx11011000110  vcmpgtfp. v0, v0, v0
{        "vsubsbs VREG , VREG , VREG",{0x10000700,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx11100000000  vsubsbs v0, v0, v0
{     "vcmpgtsb . VREG , VREG , VREG",{0x10000706,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx11100000110  vcmpgtsb. v0, v0, v0
{       "vsum4sbs VREG , VREG , VREG",{0x10000708,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx11100001000  vsum4sbs v0, v0, v0
{        "vsubshs VREG , VREG , VREG",{0x10000740,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx11101000000  vsubshs v0, v0, v0
{     "vcmpgtsh . VREG , VREG , VREG",{0x10000746,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx11101000110  vcmpgtsh. v0, v0, v0
{        "vsubsws VREG , VREG , VREG",{0x10000780,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx11110000000  vsubsws v0, v0, v0
{     "vcmpgtsw . VREG , VREG , VREG",{0x10000786,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx11110000110  vcmpgtsw. v0, v0, v0
{        "vsumsws VREG , VREG , VREG",{0x10000788,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx11110001000  vsumsws v0, v0, v0
{      "vcmpbfp . VREG , VREG , VREG",{0x100007C6,0x03FFF800}}, // 000100xxxxxxxxxxxxxxx11111000110  vcmpbfp. v0, v0, v0
{             "mulli GPR , GPR , NUM",{0x1C000000,0x03FFFFFF}}, // 000111xxxxxxxxxxxxxxxxxxxxxxxxxx  mulli r0, r0, 0
{            "subfic GPR , GPR , NUM",{0x20000000,0x03FFFFFF}}, // 001000xxxxxxxxxxxxxxxxxxxxxxxxxx  subfic r0, r0, 0
{                  "cmplwi GPR , NUM",{0x28000000,0x001FFFFF}}, // 00101000000xxxxxxxxxxxxxxxxxxxxx  cmplwi r0, 0
{                  "cmpldi GPR , NUM",{0x28200000,0x001FFFFF}}, // 00101000001xxxxxxxxxxxxxxxxxxxxx  cmpldi r0, 0
{           "cmplwi CREG , GPR , NUM",{0x28800000,0x039FFFFF}}, // 001010xxx00xxxxxxxxxxxxxxxxxxxxx  cmplwi cr1, r0, 0
{           "cmpldi CREG , GPR , NUM",{0x28A00000,0x039FFFFF}}, // 001010xxx01xxxxxxxxxxxxxxxxxxxxx  cmpldi cr1, r0, 0
{                   "cmpwi GPR , NUM",{0x2C000000,0x001FFFFF}}, // 00101100000xxxxxxxxxxxxxxxxxxxxx  cmpwi r0, 0
{                   "cmpdi GPR , NUM",{0x2C200000,0x001FFFFF}}, // 00101100001xxxxxxxxxxxxxxxxxxxxx  cmpdi r0, 0
{            "cmpwi CREG , GPR , NUM",{0x2C800000,0x039FFFFF}}, // 001011xxx00xxxxxxxxxxxxxxxxxxxxx  cmpwi cr1, r0, 0
{            "cmpdi CREG , GPR , NUM",{0x2CA00000,0x039FFFFF}}, // 001011xxx01xxxxxxxxxxxxxxxxxxxxx  cmpdi cr1, r0, 0
{             "addic GPR , GPR , NUM",{0x30000000,0x03FFFFFF}}, // 001100xxxxxxxxxxxxxxxxxxxxxxxxxx  addic r0, r0, 0
{           "addic . GPR , GPR , NUM",{0x34000000,0x03FFFFFF}}, // 001101xxxxxxxxxxxxxxxxxxxxxxxxxx  addic. r0, r0, 0
{                      "li GPR , NUM",{0x38000000,0x03E0FFFF}}, // 001110xxxxx00000xxxxxxxxxxxxxxxx  li r0, 0
{              "addi GPR , GPR , NUM",{0x38010000,0x03FFFFFF}}, // 001110xxxxxxxxxxxxxxxxxxxxxxxxxx  addi r0, r1, 0
{                     "lis GPR , NUM",{0x3C000000,0x03E0FFFF}}, // 001111xxxxx00000xxxxxxxxxxxxxxxx  lis r0, 0
{             "addis GPR , GPR , NUM",{0x3C010000,0x03FFFFFF}}, // 001111xxxxxxxxxxxxxxxxxxxxxxxxxx  addis r0, r1, 0
{             "subis GPR , GPR , NUM",{0x3C010000,0x03FFFFFF}}, // 001111xxxxxxxxxxxxxxxxxxxxxxxxxx  subis r0, r1, 0
{                        "bdnzf FLAG",{0x40000000,0x00230000}}, // 0100000000x000xx0000000000000000  bdnzf lt
{                       "bdnzfl FLAG",{0x40000001,0x00230000}}, // 0100000000x000xx0000000000000001  bdnzfl lt
{                       "bdnzfa FLAG",{0x40000002,0x00230000}}, // 0100000000x000xx0000000000000010  bdnzfa lt
{                      "bdnzfla FLAG",{0x40000003,0x00230000}}, // 0100000000x000xx0000000000000011  bdnzfla lt
{                  "bdnzf FLAG , NUM",{0x40000004,0x0023FFFC}}, // 0100000000x000xxxxxxxxxxxxxxxx00  bdnzf lt, 0x4
{                 "bdnzfl FLAG , NUM",{0x40000005,0x0023FFFC}}, // 0100000000x000xxxxxxxxxxxxxxxx01  bdnzfl lt, 0x4
{                 "bdnzfa FLAG , NUM",{0x40000006,0x0023FFFC}}, // 0100000000x000xxxxxxxxxxxxxxxx10  bdnzfa lt, 0x4
{                "bdnzfla FLAG , NUM",{0x40000007,0x0023FFFC}}, // 0100000000x000xxxxxxxxxxxxxxxx11  bdnzfla lt, 0x4
{           "bdnzf NUM * CREG + FLAG",{0x40040000,0x003F0000}}, // 0100000000xxxxxx0000000000000000  bdnzf 4*cr1+lt
{          "bdnzfl NUM * CREG + FLAG",{0x40040001,0x003F0000}}, // 0100000000xxxxxx0000000000000001  bdnzfl 4*cr1+lt
{          "bdnzfa NUM * CREG + FLAG",{0x40040002,0x003F0000}}, // 0100000000xxxxxx0000000000000010  bdnzfa 4*cr1+lt
{         "bdnzfla NUM * CREG + FLAG",{0x40040003,0x003F0000}}, // 0100000000xxxxxx0000000000000011  bdnzfla 4*cr1+lt
{     "bdnzf NUM * CREG + FLAG , NUM",{0x40040004,0x003FFFFC}}, // 0100000000xxxxxxxxxxxxxxxxxxxx00  bdnzf 4*cr1+lt, 0x4
{    "bdnzfl NUM * CREG + FLAG , NUM",{0x40040005,0x003FFFFC}}, // 0100000000xxxxxxxxxxxxxxxxxxxx01  bdnzfl 4*cr1+lt, 0x4
{    "bdnzfa NUM * CREG + FLAG , NUM",{0x40040006,0x003FFFFC}}, // 0100000000xxxxxxxxxxxxxxxxxxxx10  bdnzfa 4*cr1+lt, 0x4
{   "bdnzfla NUM * CREG + FLAG , NUM",{0x40040007,0x003FFFFC}}, // 0100000000xxxxxxxxxxxxxxxxxxxx11  bdnzfla 4*cr1+lt, 0x4
{                         "bdzf FLAG",{0x40400000,0x00230000}}, // 0100000001x000xx0000000000000000  bdzf lt
{                        "bdzfl FLAG",{0x40400001,0x00230000}}, // 0100000001x000xx0000000000000001  bdzfl lt
{                        "bdzfa FLAG",{0x40400002,0x00230000}}, // 0100000001x000xx0000000000000010  bdzfa lt
{                       "bdzfla FLAG",{0x40400003,0x00230000}}, // 0100000001x000xx0000000000000011  bdzfla lt
{                   "bdzf FLAG , NUM",{0x40400004,0x0023FFFC}}, // 0100000001x000xxxxxxxxxxxxxxxx00  bdzf lt, 0x4
{                  "bdzfl FLAG , NUM",{0x40400005,0x0023FFFC}}, // 0100000001x000xxxxxxxxxxxxxxxx01  bdzfl lt, 0x4
{                  "bdzfa FLAG , NUM",{0x40400006,0x0023FFFC}}, // 0100000001x000xxxxxxxxxxxxxxxx10  bdzfa lt, 0x4
{                 "bdzfla FLAG , NUM",{0x40400007,0x0023FFFC}}, // 0100000001x000xxxxxxxxxxxxxxxx11  bdzfla lt, 0x4
{            "bdzf NUM * CREG + FLAG",{0x40440000,0x003F0000}}, // 0100000001xxxxxx0000000000000000  bdzf 4*cr1+lt
{           "bdzfl NUM * CREG + FLAG",{0x40440001,0x003F0000}}, // 0100000001xxxxxx0000000000000001  bdzfl 4*cr1+lt
{           "bdzfa NUM * CREG + FLAG",{0x40440002,0x003F0000}}, // 0100000001xxxxxx0000000000000010  bdzfa 4*cr1+lt
{          "bdzfla NUM * CREG + FLAG",{0x40440003,0x003F0000}}, // 0100000001xxxxxx0000000000000011  bdzfla 4*cr1+lt
{      "bdzf NUM * CREG + FLAG , NUM",{0x40440004,0x003FFFFC}}, // 0100000001xxxxxxxxxxxxxxxxxxxx00  bdzf 4*cr1+lt, 0x4
{     "bdzfl NUM * CREG + FLAG , NUM",{0x40440005,0x003FFFFC}}, // 0100000001xxxxxxxxxxxxxxxxxxxx01  bdzfl 4*cr1+lt, 0x4
{     "bdzfa NUM * CREG + FLAG , NUM",{0x40440006,0x003FFFFC}}, // 0100000001xxxxxxxxxxxxxxxxxxxx10  bdzfa 4*cr1+lt, 0x4
{    "bdzfla NUM * CREG + FLAG , NUM",{0x40440007,0x003FFFFC}}, // 0100000001xxxxxxxxxxxxxxxxxxxx11  bdzfla 4*cr1+lt, 0x4
{                               "bge",{0x40800000,0x00200000}}, // 0100000010x000000000000000000000  bge
{                              "bgel",{0x40800001,0x00200000}}, // 0100000010x000000000000000000001  bgel
{                              "bgea",{0x40800002,0x00200000}}, // 0100000010x000000000000000000010  bgea
{                             "bgela",{0x40800003,0x00200000}}, // 0100000010x000000000000000000011  bgela
{                           "bge NUM",{0x40800004,0x0020FFFC}}, // 0100000010x00000xxxxxxxxxxxxxx00  bge 0x4
{                          "bgel NUM",{0x40800005,0x0020FFFC}}, // 0100000010x00000xxxxxxxxxxxxxx01  bgel 0x4
{                          "bgea NUM",{0x40800006,0x0020FFFC}}, // 0100000010x00000xxxxxxxxxxxxxx10  bgea 0x4
{                         "bgela NUM",{0x40800007,0x0020FFFC}}, // 0100000010x00000xxxxxxxxxxxxxx11  bgela 0x4
{                               "ble",{0x40810000,0x00200000}}, // 0100000010x000010000000000000000  ble
{                              "blel",{0x40810001,0x00200000}}, // 0100000010x000010000000000000001  blel
{                              "blea",{0x40810002,0x00200000}}, // 0100000010x000010000000000000010  blea
{                             "blela",{0x40810003,0x00200000}}, // 0100000010x000010000000000000011  blela
{                           "ble NUM",{0x40810004,0x0020FFFC}}, // 0100000010x00001xxxxxxxxxxxxxx00  ble 0x4
{                          "blel NUM",{0x40810005,0x0020FFFC}}, // 0100000010x00001xxxxxxxxxxxxxx01  blel 0x4
{                          "blea NUM",{0x40810006,0x0020FFFC}}, // 0100000010x00001xxxxxxxxxxxxxx10  blea 0x4
{                         "blela NUM",{0x40810007,0x0020FFFC}}, // 0100000010x00001xxxxxxxxxxxxxx11  blela 0x4
{                               "bne",{0x40820000,0x00200000}}, // 0100000010x000100000000000000000  bne
{                              "bnel",{0x40820001,0x00200000}}, // 0100000010x000100000000000000001  bnel
{                              "bnea",{0x40820002,0x00200000}}, // 0100000010x000100000000000000010  bnea
{                             "bnela",{0x40820003,0x00200000}}, // 0100000010x000100000000000000011  bnela
{                           "bne NUM",{0x40820004,0x0020FFFC}}, // 0100000010x00010xxxxxxxxxxxxxx00  bne 0x4
{                          "bnel NUM",{0x40820005,0x0020FFFC}}, // 0100000010x00010xxxxxxxxxxxxxx01  bnel 0x4
{                          "bnea NUM",{0x40820006,0x0020FFFC}}, // 0100000010x00010xxxxxxxxxxxxxx10  bnea 0x4
{                         "bnela NUM",{0x40820007,0x0020FFFC}}, // 0100000010x00010xxxxxxxxxxxxxx11  bnela 0x4
{                               "bns",{0x40830000,0x00200000}}, // 0100000010x000110000000000000000  bns
{                              "bnsl",{0x40830001,0x00200000}}, // 0100000010x000110000000000000001  bnsl
{                              "bnsa",{0x40830002,0x00200000}}, // 0100000010x000110000000000000010  bnsa
{                             "bnsla",{0x40830003,0x00200000}}, // 0100000010x000110000000000000011  bnsla
{                           "bns NUM",{0x40830004,0x0020FFFC}}, // 0100000010x00011xxxxxxxxxxxxxx00  bns 0x4
{                          "bnsl NUM",{0x40830005,0x0020FFFC}}, // 0100000010x00011xxxxxxxxxxxxxx01  bnsl 0x4
{                          "bnsa NUM",{0x40830006,0x0020FFFC}}, // 0100000010x00011xxxxxxxxxxxxxx10  bnsa 0x4
{                         "bnsla NUM",{0x40830007,0x0020FFFC}}, // 0100000010x00011xxxxxxxxxxxxxx11  bnsla 0x4
{                          "bge CREG",{0x40840000,0x003C0000}}, // 0100000010xxxx000000000000000000  bge cr1
{                         "bgel CREG",{0x40840001,0x003C0000}}, // 0100000010xxxx000000000000000001  bgel cr1
{                         "bgea CREG",{0x40840002,0x003C0000}}, // 0100000010xxxx000000000000000010  bgea cr1
{                        "bgela CREG",{0x40840003,0x003C0000}}, // 0100000010xxxx000000000000000011  bgela cr1
{                    "bge CREG , NUM",{0x40840004,0x003CFFFC}}, // 0100000010xxxx00xxxxxxxxxxxxxx00  bge cr1, 0x4
{                   "bgel CREG , NUM",{0x40840005,0x003CFFFC}}, // 0100000010xxxx00xxxxxxxxxxxxxx01  bgel cr1, 0x4
{                   "bgea CREG , NUM",{0x40840006,0x003CFFFC}}, // 0100000010xxxx00xxxxxxxxxxxxxx10  bgea cr1, 0x4
{                  "bgela CREG , NUM",{0x40840007,0x003CFFFC}}, // 0100000010xxxx00xxxxxxxxxxxxxx11  bgela cr1, 0x4
{                          "ble CREG",{0x40850000,0x003C0000}}, // 0100000010xxxx010000000000000000  ble cr1
{                         "blel CREG",{0x40850001,0x003C0000}}, // 0100000010xxxx010000000000000001  blel cr1
{                         "blea CREG",{0x40850002,0x003C0000}}, // 0100000010xxxx010000000000000010  blea cr1
{                        "blela CREG",{0x40850003,0x003C0000}}, // 0100000010xxxx010000000000000011  blela cr1
{                    "ble CREG , NUM",{0x40850004,0x003CFFFC}}, // 0100000010xxxx01xxxxxxxxxxxxxx00  ble cr1, 0x4
{                   "blel CREG , NUM",{0x40850005,0x003CFFFC}}, // 0100000010xxxx01xxxxxxxxxxxxxx01  blel cr1, 0x4
{                   "blea CREG , NUM",{0x40850006,0x003CFFFC}}, // 0100000010xxxx01xxxxxxxxxxxxxx10  blea cr1, 0x4
{                  "blela CREG , NUM",{0x40850007,0x003CFFFC}}, // 0100000010xxxx01xxxxxxxxxxxxxx11  blela cr1, 0x4
{                          "bne CREG",{0x40860000,0x003C0000}}, // 0100000010xxxx100000000000000000  bne cr1
{                         "bnel CREG",{0x40860001,0x003C0000}}, // 0100000010xxxx100000000000000001  bnel cr1
{                         "bnea CREG",{0x40860002,0x003C0000}}, // 0100000010xxxx100000000000000010  bnea cr1
{                        "bnela CREG",{0x40860003,0x003C0000}}, // 0100000010xxxx100000000000000011  bnela cr1
{                    "bne CREG , NUM",{0x40860004,0x003CFFFC}}, // 0100000010xxxx10xxxxxxxxxxxxxx00  bne cr1, 0x4
{                   "bnel CREG , NUM",{0x40860005,0x003CFFFC}}, // 0100000010xxxx10xxxxxxxxxxxxxx01  bnel cr1, 0x4
{                   "bnea CREG , NUM",{0x40860006,0x003CFFFC}}, // 0100000010xxxx10xxxxxxxxxxxxxx10  bnea cr1, 0x4
{                  "bnela CREG , NUM",{0x40860007,0x003CFFFC}}, // 0100000010xxxx10xxxxxxxxxxxxxx11  bnela cr1, 0x4
{                          "bns CREG",{0x40870000,0x003C0000}}, // 0100000010xxxx110000000000000000  bns cr1
{                         "bnsl CREG",{0x40870001,0x003C0000}}, // 0100000010xxxx110000000000000001  bnsl cr1
{                         "bnsa CREG",{0x40870002,0x003C0000}}, // 0100000010xxxx110000000000000010  bnsa cr1
{                        "bnsla CREG",{0x40870003,0x003C0000}}, // 0100000010xxxx110000000000000011  bnsla cr1
{                    "bns CREG , NUM",{0x40870004,0x003CFFFC}}, // 0100000010xxxx11xxxxxxxxxxxxxx00  bns cr1, 0x4
{                   "bnsl CREG , NUM",{0x40870005,0x003CFFFC}}, // 0100000010xxxx11xxxxxxxxxxxxxx01  bnsl cr1, 0x4
{                   "bnsa CREG , NUM",{0x40870006,0x003CFFFC}}, // 0100000010xxxx11xxxxxxxxxxxxxx10  bnsa cr1, 0x4
{                  "bnsla CREG , NUM",{0x40870007,0x003CFFFC}}, // 0100000010xxxx11xxxxxxxxxxxxxx11  bnsla cr1, 0x4
{                             "bge -",{0x40C00000,0x00000000}}, // 01000000110000000000000000000000  bge-
{                            "bgel -",{0x40C00001,0x00000000}}, // 01000000110000000000000000000001  bgel-
{                            "bgea -",{0x40C00002,0x00000000}}, // 01000000110000000000000000000010  bgea-
{                           "bgela -",{0x40C00003,0x00000000}}, // 01000000110000000000000000000011  bgela-
{                         "bge - NUM",{0x40C00004,0x0000FFFC}}, // 0100000011000000xxxxxxxxxxxxxx00  bge- 0x4
{                        "bgel - NUM",{0x40C00005,0x0000FFFC}}, // 0100000011000000xxxxxxxxxxxxxx01  bgel- 0x4
{                        "bgea - NUM",{0x40C00006,0x0000FFFC}}, // 0100000011000000xxxxxxxxxxxxxx10  bgea- 0x4
{                       "bgela - NUM",{0x40C00007,0x0000FFFC}}, // 0100000011000000xxxxxxxxxxxxxx11  bgela- 0x4
{                             "ble -",{0x40C10000,0x00000000}}, // 01000000110000010000000000000000  ble-
{                            "blel -",{0x40C10001,0x00000000}}, // 01000000110000010000000000000001  blel-
{                            "blea -",{0x40C10002,0x00000000}}, // 01000000110000010000000000000010  blea-
{                           "blela -",{0x40C10003,0x00000000}}, // 01000000110000010000000000000011  blela-
{                         "ble - NUM",{0x40C10004,0x0000FFFC}}, // 0100000011000001xxxxxxxxxxxxxx00  ble- 0x4
{                        "blel - NUM",{0x40C10005,0x0000FFFC}}, // 0100000011000001xxxxxxxxxxxxxx01  blel- 0x4
{                        "blea - NUM",{0x40C10006,0x0000FFFC}}, // 0100000011000001xxxxxxxxxxxxxx10  blea- 0x4
{                       "blela - NUM",{0x40C10007,0x0000FFFC}}, // 0100000011000001xxxxxxxxxxxxxx11  blela- 0x4
{                             "bne -",{0x40C20000,0x00000000}}, // 01000000110000100000000000000000  bne-
{                            "bnel -",{0x40C20001,0x00000000}}, // 01000000110000100000000000000001  bnel-
{                            "bnea -",{0x40C20002,0x00000000}}, // 01000000110000100000000000000010  bnea-
{                           "bnela -",{0x40C20003,0x00000000}}, // 01000000110000100000000000000011  bnela-
{                         "bne - NUM",{0x40C20004,0x0000FFFC}}, // 0100000011000010xxxxxxxxxxxxxx00  bne- 0x4
{                        "bnel - NUM",{0x40C20005,0x0000FFFC}}, // 0100000011000010xxxxxxxxxxxxxx01  bnel- 0x4
{                        "bnea - NUM",{0x40C20006,0x0000FFFC}}, // 0100000011000010xxxxxxxxxxxxxx10  bnea- 0x4
{                       "bnela - NUM",{0x40C20007,0x0000FFFC}}, // 0100000011000010xxxxxxxxxxxxxx11  bnela- 0x4
{                             "bns -",{0x40C30000,0x00000000}}, // 01000000110000110000000000000000  bns-
{                            "bnsl -",{0x40C30001,0x00000000}}, // 01000000110000110000000000000001  bnsl-
{                            "bnsa -",{0x40C30002,0x00000000}}, // 01000000110000110000000000000010  bnsa-
{                           "bnsla -",{0x40C30003,0x00000000}}, // 01000000110000110000000000000011  bnsla-
{                         "bns - NUM",{0x40C30004,0x0000FFFC}}, // 0100000011000011xxxxxxxxxxxxxx00  bns- 0x4
{                        "bnsl - NUM",{0x40C30005,0x0000FFFC}}, // 0100000011000011xxxxxxxxxxxxxx01  bnsl- 0x4
{                        "bnsa - NUM",{0x40C30006,0x0000FFFC}}, // 0100000011000011xxxxxxxxxxxxxx10  bnsa- 0x4
{                       "bnsla - NUM",{0x40C30007,0x0000FFFC}}, // 0100000011000011xxxxxxxxxxxxxx11  bnsla- 0x4
{                        "bge - CREG",{0x40C40000,0x001C0000}}, // 01000000110xxx000000000000000000  bge- cr1
{                       "bgel - CREG",{0x40C40001,0x001C0000}}, // 01000000110xxx000000000000000001  bgel- cr1
{                       "bgea - CREG",{0x40C40002,0x001C0000}}, // 01000000110xxx000000000000000010  bgea- cr1
{                      "bgela - CREG",{0x40C40003,0x001C0000}}, // 01000000110xxx000000000000000011  bgela- cr1
{                  "bge - CREG , NUM",{0x40C40004,0x001CFFFC}}, // 01000000110xxx00xxxxxxxxxxxxxx00  bge- cr1, 0x4
{                 "bgel - CREG , NUM",{0x40C40005,0x001CFFFC}}, // 01000000110xxx00xxxxxxxxxxxxxx01  bgel- cr1, 0x4
{                 "bgea - CREG , NUM",{0x40C40006,0x001CFFFC}}, // 01000000110xxx00xxxxxxxxxxxxxx10  bgea- cr1, 0x4
{                "bgela - CREG , NUM",{0x40C40007,0x001CFFFC}}, // 01000000110xxx00xxxxxxxxxxxxxx11  bgela- cr1, 0x4
{                        "ble - CREG",{0x40C50000,0x001C0000}}, // 01000000110xxx010000000000000000  ble- cr1
{                       "blel - CREG",{0x40C50001,0x001C0000}}, // 01000000110xxx010000000000000001  blel- cr1
{                       "blea - CREG",{0x40C50002,0x001C0000}}, // 01000000110xxx010000000000000010  blea- cr1
{                      "blela - CREG",{0x40C50003,0x001C0000}}, // 01000000110xxx010000000000000011  blela- cr1
{                  "ble - CREG , NUM",{0x40C50004,0x001CFFFC}}, // 01000000110xxx01xxxxxxxxxxxxxx00  ble- cr1, 0x4
{                 "blel - CREG , NUM",{0x40C50005,0x001CFFFC}}, // 01000000110xxx01xxxxxxxxxxxxxx01  blel- cr1, 0x4
{                 "blea - CREG , NUM",{0x40C50006,0x001CFFFC}}, // 01000000110xxx01xxxxxxxxxxxxxx10  blea- cr1, 0x4
{                "blela - CREG , NUM",{0x40C50007,0x001CFFFC}}, // 01000000110xxx01xxxxxxxxxxxxxx11  blela- cr1, 0x4
{                        "bne - CREG",{0x40C60000,0x001C0000}}, // 01000000110xxx100000000000000000  bne- cr1
{                       "bnel - CREG",{0x40C60001,0x001C0000}}, // 01000000110xxx100000000000000001  bnel- cr1
{                       "bnea - CREG",{0x40C60002,0x001C0000}}, // 01000000110xxx100000000000000010  bnea- cr1
{                      "bnela - CREG",{0x40C60003,0x001C0000}}, // 01000000110xxx100000000000000011  bnela- cr1
{                  "bne - CREG , NUM",{0x40C60004,0x001CFFFC}}, // 01000000110xxx10xxxxxxxxxxxxxx00  bne- cr1, 0x4
{                 "bnel - CREG , NUM",{0x40C60005,0x001CFFFC}}, // 01000000110xxx10xxxxxxxxxxxxxx01  bnel- cr1, 0x4
{                 "bnea - CREG , NUM",{0x40C60006,0x001CFFFC}}, // 01000000110xxx10xxxxxxxxxxxxxx10  bnea- cr1, 0x4
{                "bnela - CREG , NUM",{0x40C60007,0x001CFFFC}}, // 01000000110xxx10xxxxxxxxxxxxxx11  bnela- cr1, 0x4
{                        "bns - CREG",{0x40C70000,0x001C0000}}, // 01000000110xxx110000000000000000  bns- cr1
{                       "bnsl - CREG",{0x40C70001,0x001C0000}}, // 01000000110xxx110000000000000001  bnsl- cr1
{                       "bnsa - CREG",{0x40C70002,0x001C0000}}, // 01000000110xxx110000000000000010  bnsa- cr1
{                      "bnsla - CREG",{0x40C70003,0x001C0000}}, // 01000000110xxx110000000000000011  bnsla- cr1
{                  "bns - CREG , NUM",{0x40C70004,0x001CFFFC}}, // 01000000110xxx11xxxxxxxxxxxxxx00  bns- cr1, 0x4
{                 "bnsl - CREG , NUM",{0x40C70005,0x001CFFFC}}, // 01000000110xxx11xxxxxxxxxxxxxx01  bnsl- cr1, 0x4
{                 "bnsa - CREG , NUM",{0x40C70006,0x001CFFFC}}, // 01000000110xxx11xxxxxxxxxxxxxx10  bnsa- cr1, 0x4
{                "bnsla - CREG , NUM",{0x40C70007,0x001CFFFC}}, // 01000000110xxx11xxxxxxxxxxxxxx11  bnsla- cr1, 0x4
{                             "bge +",{0x40E00000,0x00000000}}, // 01000000111000000000000000000000  bge+
{                            "bgel +",{0x40E00001,0x00000000}}, // 01000000111000000000000000000001  bgel+
{                            "bgea +",{0x40E00002,0x00000000}}, // 01000000111000000000000000000010  bgea+
{                           "bgela +",{0x40E00003,0x00000000}}, // 01000000111000000000000000000011  bgela+
{                         "bge + NUM",{0x40E00004,0x0000FFFC}}, // 0100000011100000xxxxxxxxxxxxxx00  bge+ 0x4
{                        "bgel + NUM",{0x40E00005,0x0000FFFC}}, // 0100000011100000xxxxxxxxxxxxxx01  bgel+ 0x4
{                        "bgea + NUM",{0x40E00006,0x0000FFFC}}, // 0100000011100000xxxxxxxxxxxxxx10  bgea+ 0x4
{                       "bgela + NUM",{0x40E00007,0x0000FFFC}}, // 0100000011100000xxxxxxxxxxxxxx11  bgela+ 0x4
{                             "ble +",{0x40E10000,0x00000000}}, // 01000000111000010000000000000000  ble+
{                            "blel +",{0x40E10001,0x00000000}}, // 01000000111000010000000000000001  blel+
{                            "blea +",{0x40E10002,0x00000000}}, // 01000000111000010000000000000010  blea+
{                           "blela +",{0x40E10003,0x00000000}}, // 01000000111000010000000000000011  blela+
{                         "ble + NUM",{0x40E10004,0x0000FFFC}}, // 0100000011100001xxxxxxxxxxxxxx00  ble+ 0x4
{                        "blel + NUM",{0x40E10005,0x0000FFFC}}, // 0100000011100001xxxxxxxxxxxxxx01  blel+ 0x4
{                        "blea + NUM",{0x40E10006,0x0000FFFC}}, // 0100000011100001xxxxxxxxxxxxxx10  blea+ 0x4
{                       "blela + NUM",{0x40E10007,0x0000FFFC}}, // 0100000011100001xxxxxxxxxxxxxx11  blela+ 0x4
{                             "bne +",{0x40E20000,0x00000000}}, // 01000000111000100000000000000000  bne+
{                            "bnel +",{0x40E20001,0x00000000}}, // 01000000111000100000000000000001  bnel+
{                            "bnea +",{0x40E20002,0x00000000}}, // 01000000111000100000000000000010  bnea+
{                           "bnela +",{0x40E20003,0x00000000}}, // 01000000111000100000000000000011  bnela+
{                         "bne + NUM",{0x40E20004,0x0000FFFC}}, // 0100000011100010xxxxxxxxxxxxxx00  bne+ 0x4
{                        "bnel + NUM",{0x40E20005,0x0000FFFC}}, // 0100000011100010xxxxxxxxxxxxxx01  bnel+ 0x4
{                        "bnea + NUM",{0x40E20006,0x0000FFFC}}, // 0100000011100010xxxxxxxxxxxxxx10  bnea+ 0x4
{                       "bnela + NUM",{0x40E20007,0x0000FFFC}}, // 0100000011100010xxxxxxxxxxxxxx11  bnela+ 0x4
{                             "bns +",{0x40E30000,0x00000000}}, // 01000000111000110000000000000000  bns+
{                            "bnsl +",{0x40E30001,0x00000000}}, // 01000000111000110000000000000001  bnsl+
{                            "bnsa +",{0x40E30002,0x00000000}}, // 01000000111000110000000000000010  bnsa+
{                           "bnsla +",{0x40E30003,0x00000000}}, // 01000000111000110000000000000011  bnsla+
{                         "bns + NUM",{0x40E30004,0x0000FFFC}}, // 0100000011100011xxxxxxxxxxxxxx00  bns+ 0x4
{                        "bnsl + NUM",{0x40E30005,0x0000FFFC}}, // 0100000011100011xxxxxxxxxxxxxx01  bnsl+ 0x4
{                        "bnsa + NUM",{0x40E30006,0x0000FFFC}}, // 0100000011100011xxxxxxxxxxxxxx10  bnsa+ 0x4
{                       "bnsla + NUM",{0x40E30007,0x0000FFFC}}, // 0100000011100011xxxxxxxxxxxxxx11  bnsla+ 0x4
{                        "bge + CREG",{0x40E40000,0x001C0000}}, // 01000000111xxx000000000000000000  bge+ cr1
{                       "bgel + CREG",{0x40E40001,0x001C0000}}, // 01000000111xxx000000000000000001  bgel+ cr1
{                       "bgea + CREG",{0x40E40002,0x001C0000}}, // 01000000111xxx000000000000000010  bgea+ cr1
{                      "bgela + CREG",{0x40E40003,0x001C0000}}, // 01000000111xxx000000000000000011  bgela+ cr1
{                  "bge + CREG , NUM",{0x40E40004,0x001CFFFC}}, // 01000000111xxx00xxxxxxxxxxxxxx00  bge+ cr1, 0x4
{                 "bgel + CREG , NUM",{0x40E40005,0x001CFFFC}}, // 01000000111xxx00xxxxxxxxxxxxxx01  bgel+ cr1, 0x4
{                 "bgea + CREG , NUM",{0x40E40006,0x001CFFFC}}, // 01000000111xxx00xxxxxxxxxxxxxx10  bgea+ cr1, 0x4
{                "bgela + CREG , NUM",{0x40E40007,0x001CFFFC}}, // 01000000111xxx00xxxxxxxxxxxxxx11  bgela+ cr1, 0x4
{                        "ble + CREG",{0x40E50000,0x001C0000}}, // 01000000111xxx010000000000000000  ble+ cr1
{                       "blel + CREG",{0x40E50001,0x001C0000}}, // 01000000111xxx010000000000000001  blel+ cr1
{                       "blea + CREG",{0x40E50002,0x001C0000}}, // 01000000111xxx010000000000000010  blea+ cr1
{                      "blela + CREG",{0x40E50003,0x001C0000}}, // 01000000111xxx010000000000000011  blela+ cr1
{                  "ble + CREG , NUM",{0x40E50004,0x001CFFFC}}, // 01000000111xxx01xxxxxxxxxxxxxx00  ble+ cr1, 0x4
{                 "blel + CREG , NUM",{0x40E50005,0x001CFFFC}}, // 01000000111xxx01xxxxxxxxxxxxxx01  blel+ cr1, 0x4
{                 "blea + CREG , NUM",{0x40E50006,0x001CFFFC}}, // 01000000111xxx01xxxxxxxxxxxxxx10  blea+ cr1, 0x4
{                "blela + CREG , NUM",{0x40E50007,0x001CFFFC}}, // 01000000111xxx01xxxxxxxxxxxxxx11  blela+ cr1, 0x4
{                        "bne + CREG",{0x40E60000,0x001C0000}}, // 01000000111xxx100000000000000000  bne+ cr1
{                       "bnel + CREG",{0x40E60001,0x001C0000}}, // 01000000111xxx100000000000000001  bnel+ cr1
{                       "bnea + CREG",{0x40E60002,0x001C0000}}, // 01000000111xxx100000000000000010  bnea+ cr1
{                      "bnela + CREG",{0x40E60003,0x001C0000}}, // 01000000111xxx100000000000000011  bnela+ cr1
{                  "bne + CREG , NUM",{0x40E60004,0x001CFFFC}}, // 01000000111xxx10xxxxxxxxxxxxxx00  bne+ cr1, 0x4
{                 "bnel + CREG , NUM",{0x40E60005,0x001CFFFC}}, // 01000000111xxx10xxxxxxxxxxxxxx01  bnel+ cr1, 0x4
{                 "bnea + CREG , NUM",{0x40E60006,0x001CFFFC}}, // 01000000111xxx10xxxxxxxxxxxxxx10  bnea+ cr1, 0x4
{                "bnela + CREG , NUM",{0x40E60007,0x001CFFFC}}, // 01000000111xxx10xxxxxxxxxxxxxx11  bnela+ cr1, 0x4
{                        "bns + CREG",{0x40E70000,0x001C0000}}, // 01000000111xxx110000000000000000  bns+ cr1
{                       "bnsl + CREG",{0x40E70001,0x001C0000}}, // 01000000111xxx110000000000000001  bnsl+ cr1
{                       "bnsa + CREG",{0x40E70002,0x001C0000}}, // 01000000111xxx110000000000000010  bnsa+ cr1
{                      "bnsla + CREG",{0x40E70003,0x001C0000}}, // 01000000111xxx110000000000000011  bnsla+ cr1
{                  "bns + CREG , NUM",{0x40E70004,0x001CFFFC}}, // 01000000111xxx11xxxxxxxxxxxxxx00  bns+ cr1, 0x4
{                 "bnsl + CREG , NUM",{0x40E70005,0x001CFFFC}}, // 01000000111xxx11xxxxxxxxxxxxxx01  bnsl+ cr1, 0x4
{                 "bnsa + CREG , NUM",{0x40E70006,0x001CFFFC}}, // 01000000111xxx11xxxxxxxxxxxxxx10  bnsa+ cr1, 0x4
{                "bnsla + CREG , NUM",{0x40E70007,0x001CFFFC}}, // 01000000111xxx11xxxxxxxxxxxxxx11  bnsla+ cr1, 0x4
{                        "bdnzt FLAG",{0x41000000,0x00230000}}, // 0100000100x000xx0000000000000000  bdnzt lt
{                       "bdnztl FLAG",{0x41000001,0x00230000}}, // 0100000100x000xx0000000000000001  bdnztl lt
{                       "bdnzta FLAG",{0x41000002,0x00230000}}, // 0100000100x000xx0000000000000010  bdnzta lt
{                      "bdnztla FLAG",{0x41000003,0x00230000}}, // 0100000100x000xx0000000000000011  bdnztla lt
{                  "bdnzt FLAG , NUM",{0x41000004,0x0023FFFC}}, // 0100000100x000xxxxxxxxxxxxxxxx00  bdnzt lt, 0x4
{                 "bdnztl FLAG , NUM",{0x41000005,0x0023FFFC}}, // 0100000100x000xxxxxxxxxxxxxxxx01  bdnztl lt, 0x4
{                 "bdnzta FLAG , NUM",{0x41000006,0x0023FFFC}}, // 0100000100x000xxxxxxxxxxxxxxxx10  bdnzta lt, 0x4
{                "bdnztla FLAG , NUM",{0x41000007,0x0023FFFC}}, // 0100000100x000xxxxxxxxxxxxxxxx11  bdnztla lt, 0x4
{           "bdnzt NUM * CREG + FLAG",{0x41040000,0x003F0000}}, // 0100000100xxxxxx0000000000000000  bdnzt 4*cr1+lt
{          "bdnztl NUM * CREG + FLAG",{0x41040001,0x003F0000}}, // 0100000100xxxxxx0000000000000001  bdnztl 4*cr1+lt
{          "bdnzta NUM * CREG + FLAG",{0x41040002,0x003F0000}}, // 0100000100xxxxxx0000000000000010  bdnzta 4*cr1+lt
{         "bdnztla NUM * CREG + FLAG",{0x41040003,0x003F0000}}, // 0100000100xxxxxx0000000000000011  bdnztla 4*cr1+lt
{     "bdnzt NUM * CREG + FLAG , NUM",{0x41040004,0x003FFFFC}}, // 0100000100xxxxxxxxxxxxxxxxxxxx00  bdnzt 4*cr1+lt, 0x4
{    "bdnztl NUM * CREG + FLAG , NUM",{0x41040005,0x003FFFFC}}, // 0100000100xxxxxxxxxxxxxxxxxxxx01  bdnztl 4*cr1+lt, 0x4
{    "bdnzta NUM * CREG + FLAG , NUM",{0x41040006,0x003FFFFC}}, // 0100000100xxxxxxxxxxxxxxxxxxxx10  bdnzta 4*cr1+lt, 0x4
{   "bdnztla NUM * CREG + FLAG , NUM",{0x41040007,0x003FFFFC}}, // 0100000100xxxxxxxxxxxxxxxxxxxx11  bdnztla 4*cr1+lt, 0x4
{                         "bdzt FLAG",{0x41400000,0x00230000}}, // 0100000101x000xx0000000000000000  bdzt lt
{                        "bdztl FLAG",{0x41400001,0x00230000}}, // 0100000101x000xx0000000000000001  bdztl lt
{                        "bdzta FLAG",{0x41400002,0x00230000}}, // 0100000101x000xx0000000000000010  bdzta lt
{                       "bdztla FLAG",{0x41400003,0x00230000}}, // 0100000101x000xx0000000000000011  bdztla lt
{                   "bdzt FLAG , NUM",{0x41400004,0x0023FFFC}}, // 0100000101x000xxxxxxxxxxxxxxxx00  bdzt lt, 0x4
{                  "bdztl FLAG , NUM",{0x41400005,0x0023FFFC}}, // 0100000101x000xxxxxxxxxxxxxxxx01  bdztl lt, 0x4
{                  "bdzta FLAG , NUM",{0x41400006,0x0023FFFC}}, // 0100000101x000xxxxxxxxxxxxxxxx10  bdzta lt, 0x4
{                 "bdztla FLAG , NUM",{0x41400007,0x0023FFFC}}, // 0100000101x000xxxxxxxxxxxxxxxx11  bdztla lt, 0x4
{            "bdzt NUM * CREG + FLAG",{0x41440000,0x003F0000}}, // 0100000101xxxxxx0000000000000000  bdzt 4*cr1+lt
{           "bdztl NUM * CREG + FLAG",{0x41440001,0x003F0000}}, // 0100000101xxxxxx0000000000000001  bdztl 4*cr1+lt
{           "bdzta NUM * CREG + FLAG",{0x41440002,0x003F0000}}, // 0100000101xxxxxx0000000000000010  bdzta 4*cr1+lt
{          "bdztla NUM * CREG + FLAG",{0x41440003,0x003F0000}}, // 0100000101xxxxxx0000000000000011  bdztla 4*cr1+lt
{      "bdzt NUM * CREG + FLAG , NUM",{0x41440004,0x003FFFFC}}, // 0100000101xxxxxxxxxxxxxxxxxxxx00  bdzt 4*cr1+lt, 0x4
{     "bdztl NUM * CREG + FLAG , NUM",{0x41440005,0x003FFFFC}}, // 0100000101xxxxxxxxxxxxxxxxxxxx01  bdztl 4*cr1+lt, 0x4
{     "bdzta NUM * CREG + FLAG , NUM",{0x41440006,0x003FFFFC}}, // 0100000101xxxxxxxxxxxxxxxxxxxx10  bdzta 4*cr1+lt, 0x4
{    "bdztla NUM * CREG + FLAG , NUM",{0x41440007,0x003FFFFC}}, // 0100000101xxxxxxxxxxxxxxxxxxxx11  bdztla 4*cr1+lt, 0x4
{                               "blt",{0x41800000,0x00200000}}, // 0100000110x000000000000000000000  blt
{                              "bltl",{0x41800001,0x00200000}}, // 0100000110x000000000000000000001  bltl
{                              "blta",{0x41800002,0x00200000}}, // 0100000110x000000000000000000010  blta
{                             "bltla",{0x41800003,0x00200000}}, // 0100000110x000000000000000000011  bltla
{                           "blt NUM",{0x41800004,0x0020FFFC}}, // 0100000110x00000xxxxxxxxxxxxxx00  blt 0x4
{                          "bltl NUM",{0x41800005,0x0020FFFC}}, // 0100000110x00000xxxxxxxxxxxxxx01  bltl 0x4
{                          "blta NUM",{0x41800006,0x0020FFFC}}, // 0100000110x00000xxxxxxxxxxxxxx10  blta 0x4
{                         "bltla NUM",{0x41800007,0x0020FFFC}}, // 0100000110x00000xxxxxxxxxxxxxx11  bltla 0x4
{                               "bgt",{0x41810000,0x00200000}}, // 0100000110x000010000000000000000  bgt
{                              "bgtl",{0x41810001,0x00200000}}, // 0100000110x000010000000000000001  bgtl
{                              "bgta",{0x41810002,0x00200000}}, // 0100000110x000010000000000000010  bgta
{                             "bgtla",{0x41810003,0x00200000}}, // 0100000110x000010000000000000011  bgtla
{                           "bgt NUM",{0x41810004,0x0020FFFC}}, // 0100000110x00001xxxxxxxxxxxxxx00  bgt 0x4
{                          "bgtl NUM",{0x41810005,0x0020FFFC}}, // 0100000110x00001xxxxxxxxxxxxxx01  bgtl 0x4
{                          "bgta NUM",{0x41810006,0x0020FFFC}}, // 0100000110x00001xxxxxxxxxxxxxx10  bgta 0x4
{                         "bgtla NUM",{0x41810007,0x0020FFFC}}, // 0100000110x00001xxxxxxxxxxxxxx11  bgtla 0x4
{                               "beq",{0x41820000,0x00200000}}, // 0100000110x000100000000000000000  beq
{                              "beql",{0x41820001,0x00200000}}, // 0100000110x000100000000000000001  beql
{                              "beqa",{0x41820002,0x00200000}}, // 0100000110x000100000000000000010  beqa
{                             "beqla",{0x41820003,0x00200000}}, // 0100000110x000100000000000000011  beqla
{                           "beq NUM",{0x41820004,0x0020FFFC}}, // 0100000110x00010xxxxxxxxxxxxxx00  beq 0x4
{                          "beql NUM",{0x41820005,0x0020FFFC}}, // 0100000110x00010xxxxxxxxxxxxxx01  beql 0x4
{                          "beqa NUM",{0x41820006,0x0020FFFC}}, // 0100000110x00010xxxxxxxxxxxxxx10  beqa 0x4
{                         "beqla NUM",{0x41820007,0x0020FFFC}}, // 0100000110x00010xxxxxxxxxxxxxx11  beqla 0x4
{                               "bso",{0x41830000,0x00200000}}, // 0100000110x000110000000000000000  bso
{                              "bsol",{0x41830001,0x00200000}}, // 0100000110x000110000000000000001  bsol
{                              "bsoa",{0x41830002,0x00200000}}, // 0100000110x000110000000000000010  bsoa
{                             "bsola",{0x41830003,0x00200000}}, // 0100000110x000110000000000000011  bsola
{                           "bso NUM",{0x41830004,0x0020FFFC}}, // 0100000110x00011xxxxxxxxxxxxxx00  bso 0x4
{                          "bsol NUM",{0x41830005,0x0020FFFC}}, // 0100000110x00011xxxxxxxxxxxxxx01  bsol 0x4
{                          "bsoa NUM",{0x41830006,0x0020FFFC}}, // 0100000110x00011xxxxxxxxxxxxxx10  bsoa 0x4
{                         "bsola NUM",{0x41830007,0x0020FFFC}}, // 0100000110x00011xxxxxxxxxxxxxx11  bsola 0x4
{                          "blt CREG",{0x41840000,0x003C0000}}, // 0100000110xxxx000000000000000000  blt cr1
{                         "bltl CREG",{0x41840001,0x003C0000}}, // 0100000110xxxx000000000000000001  bltl cr1
{                         "blta CREG",{0x41840002,0x003C0000}}, // 0100000110xxxx000000000000000010  blta cr1
{                        "bltla CREG",{0x41840003,0x003C0000}}, // 0100000110xxxx000000000000000011  bltla cr1
{                    "blt CREG , NUM",{0x41840004,0x003CFFFC}}, // 0100000110xxxx00xxxxxxxxxxxxxx00  blt cr1, 0x4
{                   "bltl CREG , NUM",{0x41840005,0x003CFFFC}}, // 0100000110xxxx00xxxxxxxxxxxxxx01  bltl cr1, 0x4
{                   "blta CREG , NUM",{0x41840006,0x003CFFFC}}, // 0100000110xxxx00xxxxxxxxxxxxxx10  blta cr1, 0x4
{                  "bltla CREG , NUM",{0x41840007,0x003CFFFC}}, // 0100000110xxxx00xxxxxxxxxxxxxx11  bltla cr1, 0x4
{                          "bgt CREG",{0x41850000,0x003C0000}}, // 0100000110xxxx010000000000000000  bgt cr1
{                         "bgtl CREG",{0x41850001,0x003C0000}}, // 0100000110xxxx010000000000000001  bgtl cr1
{                         "bgta CREG",{0x41850002,0x003C0000}}, // 0100000110xxxx010000000000000010  bgta cr1
{                        "bgtla CREG",{0x41850003,0x003C0000}}, // 0100000110xxxx010000000000000011  bgtla cr1
{                    "bgt CREG , NUM",{0x41850004,0x003CFFFC}}, // 0100000110xxxx01xxxxxxxxxxxxxx00  bgt cr1, 0x4
{                   "bgtl CREG , NUM",{0x41850005,0x003CFFFC}}, // 0100000110xxxx01xxxxxxxxxxxxxx01  bgtl cr1, 0x4
{                   "bgta CREG , NUM",{0x41850006,0x003CFFFC}}, // 0100000110xxxx01xxxxxxxxxxxxxx10  bgta cr1, 0x4
{                  "bgtla CREG , NUM",{0x41850007,0x003CFFFC}}, // 0100000110xxxx01xxxxxxxxxxxxxx11  bgtla cr1, 0x4
{                          "beq CREG",{0x41860000,0x003C0000}}, // 0100000110xxxx100000000000000000  beq cr1
{                         "beql CREG",{0x41860001,0x003C0000}}, // 0100000110xxxx100000000000000001  beql cr1
{                         "beqa CREG",{0x41860002,0x003C0000}}, // 0100000110xxxx100000000000000010  beqa cr1
{                        "beqla CREG",{0x41860003,0x003C0000}}, // 0100000110xxxx100000000000000011  beqla cr1
{                    "beq CREG , NUM",{0x41860004,0x003CFFFC}}, // 0100000110xxxx10xxxxxxxxxxxxxx00  beq cr1, 0x4
{                   "beql CREG , NUM",{0x41860005,0x003CFFFC}}, // 0100000110xxxx10xxxxxxxxxxxxxx01  beql cr1, 0x4
{                   "beqa CREG , NUM",{0x41860006,0x003CFFFC}}, // 0100000110xxxx10xxxxxxxxxxxxxx10  beqa cr1, 0x4
{                  "beqla CREG , NUM",{0x41860007,0x003CFFFC}}, // 0100000110xxxx10xxxxxxxxxxxxxx11  beqla cr1, 0x4
{                          "bso CREG",{0x41870000,0x003C0000}}, // 0100000110xxxx110000000000000000  bso cr1
{                         "bsol CREG",{0x41870001,0x003C0000}}, // 0100000110xxxx110000000000000001  bsol cr1
{                         "bsoa CREG",{0x41870002,0x003C0000}}, // 0100000110xxxx110000000000000010  bsoa cr1
{                        "bsola CREG",{0x41870003,0x003C0000}}, // 0100000110xxxx110000000000000011  bsola cr1
{                    "bso CREG , NUM",{0x41870004,0x003CFFFC}}, // 0100000110xxxx11xxxxxxxxxxxxxx00  bso cr1, 0x4
{                   "bsol CREG , NUM",{0x41870005,0x003CFFFC}}, // 0100000110xxxx11xxxxxxxxxxxxxx01  bsol cr1, 0x4
{                   "bsoa CREG , NUM",{0x41870006,0x003CFFFC}}, // 0100000110xxxx11xxxxxxxxxxxxxx10  bsoa cr1, 0x4
{                  "bsola CREG , NUM",{0x41870007,0x003CFFFC}}, // 0100000110xxxx11xxxxxxxxxxxxxx11  bsola cr1, 0x4
{                             "blt -",{0x41C00000,0x00000000}}, // 01000001110000000000000000000000  blt-
{                            "bltl -",{0x41C00001,0x00000000}}, // 01000001110000000000000000000001  bltl-
{                            "blta -",{0x41C00002,0x00000000}}, // 01000001110000000000000000000010  blta-
{                           "bltla -",{0x41C00003,0x00000000}}, // 01000001110000000000000000000011  bltla-
{                         "blt - NUM",{0x41C00004,0x0000FFFC}}, // 0100000111000000xxxxxxxxxxxxxx00  blt- 0x4
{                        "bltl - NUM",{0x41C00005,0x0000FFFC}}, // 0100000111000000xxxxxxxxxxxxxx01  bltl- 0x4
{                        "blta - NUM",{0x41C00006,0x0000FFFC}}, // 0100000111000000xxxxxxxxxxxxxx10  blta- 0x4
{                       "bltla - NUM",{0x41C00007,0x0000FFFC}}, // 0100000111000000xxxxxxxxxxxxxx11  bltla- 0x4
{                             "bgt -",{0x41C10000,0x00000000}}, // 01000001110000010000000000000000  bgt-
{                            "bgtl -",{0x41C10001,0x00000000}}, // 01000001110000010000000000000001  bgtl-
{                            "bgta -",{0x41C10002,0x00000000}}, // 01000001110000010000000000000010  bgta-
{                           "bgtla -",{0x41C10003,0x00000000}}, // 01000001110000010000000000000011  bgtla-
{                         "bgt - NUM",{0x41C10004,0x0000FFFC}}, // 0100000111000001xxxxxxxxxxxxxx00  bgt- 0x4
{                        "bgtl - NUM",{0x41C10005,0x0000FFFC}}, // 0100000111000001xxxxxxxxxxxxxx01  bgtl- 0x4
{                        "bgta - NUM",{0x41C10006,0x0000FFFC}}, // 0100000111000001xxxxxxxxxxxxxx10  bgta- 0x4
{                       "bgtla - NUM",{0x41C10007,0x0000FFFC}}, // 0100000111000001xxxxxxxxxxxxxx11  bgtla- 0x4
{                             "beq -",{0x41C20000,0x00000000}}, // 01000001110000100000000000000000  beq-
{                            "beql -",{0x41C20001,0x00000000}}, // 01000001110000100000000000000001  beql-
{                            "beqa -",{0x41C20002,0x00000000}}, // 01000001110000100000000000000010  beqa-
{                           "beqla -",{0x41C20003,0x00000000}}, // 01000001110000100000000000000011  beqla-
{                         "beq - NUM",{0x41C20004,0x0000FFFC}}, // 0100000111000010xxxxxxxxxxxxxx00  beq- 0x4
{                        "beql - NUM",{0x41C20005,0x0000FFFC}}, // 0100000111000010xxxxxxxxxxxxxx01  beql- 0x4
{                        "beqa - NUM",{0x41C20006,0x0000FFFC}}, // 0100000111000010xxxxxxxxxxxxxx10  beqa- 0x4
{                       "beqla - NUM",{0x41C20007,0x0000FFFC}}, // 0100000111000010xxxxxxxxxxxxxx11  beqla- 0x4
{                             "bso -",{0x41C30000,0x00000000}}, // 01000001110000110000000000000000  bso-
{                            "bsol -",{0x41C30001,0x00000000}}, // 01000001110000110000000000000001  bsol-
{                            "bsoa -",{0x41C30002,0x00000000}}, // 01000001110000110000000000000010  bsoa-
{                           "bsola -",{0x41C30003,0x00000000}}, // 01000001110000110000000000000011  bsola-
{                         "bso - NUM",{0x41C30004,0x0000FFFC}}, // 0100000111000011xxxxxxxxxxxxxx00  bso- 0x4
{                        "bsol - NUM",{0x41C30005,0x0000FFFC}}, // 0100000111000011xxxxxxxxxxxxxx01  bsol- 0x4
{                        "bsoa - NUM",{0x41C30006,0x0000FFFC}}, // 0100000111000011xxxxxxxxxxxxxx10  bsoa- 0x4
{                       "bsola - NUM",{0x41C30007,0x0000FFFC}}, // 0100000111000011xxxxxxxxxxxxxx11  bsola- 0x4
{                        "blt - CREG",{0x41C40000,0x001C0000}}, // 01000001110xxx000000000000000000  blt- cr1
{                       "bltl - CREG",{0x41C40001,0x001C0000}}, // 01000001110xxx000000000000000001  bltl- cr1
{                       "blta - CREG",{0x41C40002,0x001C0000}}, // 01000001110xxx000000000000000010  blta- cr1
{                      "bltla - CREG",{0x41C40003,0x001C0000}}, // 01000001110xxx000000000000000011  bltla- cr1
{                  "blt - CREG , NUM",{0x41C40004,0x001CFFFC}}, // 01000001110xxx00xxxxxxxxxxxxxx00  blt- cr1, 0x4
{                 "bltl - CREG , NUM",{0x41C40005,0x001CFFFC}}, // 01000001110xxx00xxxxxxxxxxxxxx01  bltl- cr1, 0x4
{                 "blta - CREG , NUM",{0x41C40006,0x001CFFFC}}, // 01000001110xxx00xxxxxxxxxxxxxx10  blta- cr1, 0x4
{                "bltla - CREG , NUM",{0x41C40007,0x001CFFFC}}, // 01000001110xxx00xxxxxxxxxxxxxx11  bltla- cr1, 0x4
{                        "bgt - CREG",{0x41C50000,0x001C0000}}, // 01000001110xxx010000000000000000  bgt- cr1
{                       "bgtl - CREG",{0x41C50001,0x001C0000}}, // 01000001110xxx010000000000000001  bgtl- cr1
{                       "bgta - CREG",{0x41C50002,0x001C0000}}, // 01000001110xxx010000000000000010  bgta- cr1
{                      "bgtla - CREG",{0x41C50003,0x001C0000}}, // 01000001110xxx010000000000000011  bgtla- cr1
{                  "bgt - CREG , NUM",{0x41C50004,0x001CFFFC}}, // 01000001110xxx01xxxxxxxxxxxxxx00  bgt- cr1, 0x4
{                 "bgtl - CREG , NUM",{0x41C50005,0x001CFFFC}}, // 01000001110xxx01xxxxxxxxxxxxxx01  bgtl- cr1, 0x4
{                 "bgta - CREG , NUM",{0x41C50006,0x001CFFFC}}, // 01000001110xxx01xxxxxxxxxxxxxx10  bgta- cr1, 0x4
{                "bgtla - CREG , NUM",{0x41C50007,0x001CFFFC}}, // 01000001110xxx01xxxxxxxxxxxxxx11  bgtla- cr1, 0x4
{                        "beq - CREG",{0x41C60000,0x001C0000}}, // 01000001110xxx100000000000000000  beq- cr1
{                       "beql - CREG",{0x41C60001,0x001C0000}}, // 01000001110xxx100000000000000001  beql- cr1
{                       "beqa - CREG",{0x41C60002,0x001C0000}}, // 01000001110xxx100000000000000010  beqa- cr1
{                      "beqla - CREG",{0x41C60003,0x001C0000}}, // 01000001110xxx100000000000000011  beqla- cr1
{                  "beq - CREG , NUM",{0x41C60004,0x001CFFFC}}, // 01000001110xxx10xxxxxxxxxxxxxx00  beq- cr1, 0x4
{                 "beql - CREG , NUM",{0x41C60005,0x001CFFFC}}, // 01000001110xxx10xxxxxxxxxxxxxx01  beql- cr1, 0x4
{                 "beqa - CREG , NUM",{0x41C60006,0x001CFFFC}}, // 01000001110xxx10xxxxxxxxxxxxxx10  beqa- cr1, 0x4
{                "beqla - CREG , NUM",{0x41C60007,0x001CFFFC}}, // 01000001110xxx10xxxxxxxxxxxxxx11  beqla- cr1, 0x4
{                        "bso - CREG",{0x41C70000,0x001C0000}}, // 01000001110xxx110000000000000000  bso- cr1
{                       "bsol - CREG",{0x41C70001,0x001C0000}}, // 01000001110xxx110000000000000001  bsol- cr1
{                       "bsoa - CREG",{0x41C70002,0x001C0000}}, // 01000001110xxx110000000000000010  bsoa- cr1
{                      "bsola - CREG",{0x41C70003,0x001C0000}}, // 01000001110xxx110000000000000011  bsola- cr1
{                  "bso - CREG , NUM",{0x41C70004,0x001CFFFC}}, // 01000001110xxx11xxxxxxxxxxxxxx00  bso- cr1, 0x4
{                 "bsol - CREG , NUM",{0x41C70005,0x001CFFFC}}, // 01000001110xxx11xxxxxxxxxxxxxx01  bsol- cr1, 0x4
{                 "bsoa - CREG , NUM",{0x41C70006,0x001CFFFC}}, // 01000001110xxx11xxxxxxxxxxxxxx10  bsoa- cr1, 0x4
{                "bsola - CREG , NUM",{0x41C70007,0x001CFFFC}}, // 01000001110xxx11xxxxxxxxxxxxxx11  bsola- cr1, 0x4
{                             "blt +",{0x41E00000,0x00000000}}, // 01000001111000000000000000000000  blt+
{                            "bltl +",{0x41E00001,0x00000000}}, // 01000001111000000000000000000001  bltl+
{                            "blta +",{0x41E00002,0x00000000}}, // 01000001111000000000000000000010  blta+
{                           "bltla +",{0x41E00003,0x00000000}}, // 01000001111000000000000000000011  bltla+
{                         "blt + NUM",{0x41E00004,0x0000FFFC}}, // 0100000111100000xxxxxxxxxxxxxx00  blt+ 0x4
{                        "bltl + NUM",{0x41E00005,0x0000FFFC}}, // 0100000111100000xxxxxxxxxxxxxx01  bltl+ 0x4
{                        "blta + NUM",{0x41E00006,0x0000FFFC}}, // 0100000111100000xxxxxxxxxxxxxx10  blta+ 0x4
{                       "bltla + NUM",{0x41E00007,0x0000FFFC}}, // 0100000111100000xxxxxxxxxxxxxx11  bltla+ 0x4
{                             "bgt +",{0x41E10000,0x00000000}}, // 01000001111000010000000000000000  bgt+
{                            "bgtl +",{0x41E10001,0x00000000}}, // 01000001111000010000000000000001  bgtl+
{                            "bgta +",{0x41E10002,0x00000000}}, // 01000001111000010000000000000010  bgta+
{                           "bgtla +",{0x41E10003,0x00000000}}, // 01000001111000010000000000000011  bgtla+
{                         "bgt + NUM",{0x41E10004,0x0000FFFC}}, // 0100000111100001xxxxxxxxxxxxxx00  bgt+ 0x4
{                        "bgtl + NUM",{0x41E10005,0x0000FFFC}}, // 0100000111100001xxxxxxxxxxxxxx01  bgtl+ 0x4
{                        "bgta + NUM",{0x41E10006,0x0000FFFC}}, // 0100000111100001xxxxxxxxxxxxxx10  bgta+ 0x4
{                       "bgtla + NUM",{0x41E10007,0x0000FFFC}}, // 0100000111100001xxxxxxxxxxxxxx11  bgtla+ 0x4
{                             "beq +",{0x41E20000,0x00000000}}, // 01000001111000100000000000000000  beq+
{                            "beql +",{0x41E20001,0x00000000}}, // 01000001111000100000000000000001  beql+
{                            "beqa +",{0x41E20002,0x00000000}}, // 01000001111000100000000000000010  beqa+
{                           "beqla +",{0x41E20003,0x00000000}}, // 01000001111000100000000000000011  beqla+
{                         "beq + NUM",{0x41E20004,0x0000FFFC}}, // 0100000111100010xxxxxxxxxxxxxx00  beq+ 0x4
{                        "beql + NUM",{0x41E20005,0x0000FFFC}}, // 0100000111100010xxxxxxxxxxxxxx01  beql+ 0x4
{                        "beqa + NUM",{0x41E20006,0x0000FFFC}}, // 0100000111100010xxxxxxxxxxxxxx10  beqa+ 0x4
{                       "beqla + NUM",{0x41E20007,0x0000FFFC}}, // 0100000111100010xxxxxxxxxxxxxx11  beqla+ 0x4
{                             "bso +",{0x41E30000,0x00000000}}, // 01000001111000110000000000000000  bso+
{                            "bsol +",{0x41E30001,0x00000000}}, // 01000001111000110000000000000001  bsol+
{                            "bsoa +",{0x41E30002,0x00000000}}, // 01000001111000110000000000000010  bsoa+
{                           "bsola +",{0x41E30003,0x00000000}}, // 01000001111000110000000000000011  bsola+
{                         "bso + NUM",{0x41E30004,0x0000FFFC}}, // 0100000111100011xxxxxxxxxxxxxx00  bso+ 0x4
{                        "bsol + NUM",{0x41E30005,0x0000FFFC}}, // 0100000111100011xxxxxxxxxxxxxx01  bsol+ 0x4
{                        "bsoa + NUM",{0x41E30006,0x0000FFFC}}, // 0100000111100011xxxxxxxxxxxxxx10  bsoa+ 0x4
{                       "bsola + NUM",{0x41E30007,0x0000FFFC}}, // 0100000111100011xxxxxxxxxxxxxx11  bsola+ 0x4
{                        "blt + CREG",{0x41E40000,0x001C0000}}, // 01000001111xxx000000000000000000  blt+ cr1
{                       "bltl + CREG",{0x41E40001,0x001C0000}}, // 01000001111xxx000000000000000001  bltl+ cr1
{                       "blta + CREG",{0x41E40002,0x001C0000}}, // 01000001111xxx000000000000000010  blta+ cr1
{                      "bltla + CREG",{0x41E40003,0x001C0000}}, // 01000001111xxx000000000000000011  bltla+ cr1
{                  "blt + CREG , NUM",{0x41E40004,0x001CFFFC}}, // 01000001111xxx00xxxxxxxxxxxxxx00  blt+ cr1, 0x4
{                 "bltl + CREG , NUM",{0x41E40005,0x001CFFFC}}, // 01000001111xxx00xxxxxxxxxxxxxx01  bltl+ cr1, 0x4
{                 "blta + CREG , NUM",{0x41E40006,0x001CFFFC}}, // 01000001111xxx00xxxxxxxxxxxxxx10  blta+ cr1, 0x4
{                "bltla + CREG , NUM",{0x41E40007,0x001CFFFC}}, // 01000001111xxx00xxxxxxxxxxxxxx11  bltla+ cr1, 0x4
{                        "bgt + CREG",{0x41E50000,0x001C0000}}, // 01000001111xxx010000000000000000  bgt+ cr1
{                       "bgtl + CREG",{0x41E50001,0x001C0000}}, // 01000001111xxx010000000000000001  bgtl+ cr1
{                       "bgta + CREG",{0x41E50002,0x001C0000}}, // 01000001111xxx010000000000000010  bgta+ cr1
{                      "bgtla + CREG",{0x41E50003,0x001C0000}}, // 01000001111xxx010000000000000011  bgtla+ cr1
{                  "bgt + CREG , NUM",{0x41E50004,0x001CFFFC}}, // 01000001111xxx01xxxxxxxxxxxxxx00  bgt+ cr1, 0x4
{                 "bgtl + CREG , NUM",{0x41E50005,0x001CFFFC}}, // 01000001111xxx01xxxxxxxxxxxxxx01  bgtl+ cr1, 0x4
{                 "bgta + CREG , NUM",{0x41E50006,0x001CFFFC}}, // 01000001111xxx01xxxxxxxxxxxxxx10  bgta+ cr1, 0x4
{                "bgtla + CREG , NUM",{0x41E50007,0x001CFFFC}}, // 01000001111xxx01xxxxxxxxxxxxxx11  bgtla+ cr1, 0x4
{                        "beq + CREG",{0x41E60000,0x001C0000}}, // 01000001111xxx100000000000000000  beq+ cr1
{                       "beql + CREG",{0x41E60001,0x001C0000}}, // 01000001111xxx100000000000000001  beql+ cr1
{                       "beqa + CREG",{0x41E60002,0x001C0000}}, // 01000001111xxx100000000000000010  beqa+ cr1
{                      "beqla + CREG",{0x41E60003,0x001C0000}}, // 01000001111xxx100000000000000011  beqla+ cr1
{                  "beq + CREG , NUM",{0x41E60004,0x001CFFFC}}, // 01000001111xxx10xxxxxxxxxxxxxx00  beq+ cr1, 0x4
{                 "beql + CREG , NUM",{0x41E60005,0x001CFFFC}}, // 01000001111xxx10xxxxxxxxxxxxxx01  beql+ cr1, 0x4
{                 "beqa + CREG , NUM",{0x41E60006,0x001CFFFC}}, // 01000001111xxx10xxxxxxxxxxxxxx10  beqa+ cr1, 0x4
{                "beqla + CREG , NUM",{0x41E60007,0x001CFFFC}}, // 01000001111xxx10xxxxxxxxxxxxxx11  beqla+ cr1, 0x4
{                        "bso + CREG",{0x41E70000,0x001C0000}}, // 01000001111xxx110000000000000000  bso+ cr1
{                       "bsol + CREG",{0x41E70001,0x001C0000}}, // 01000001111xxx110000000000000001  bsol+ cr1
{                       "bsoa + CREG",{0x41E70002,0x001C0000}}, // 01000001111xxx110000000000000010  bsoa+ cr1
{                      "bsola + CREG",{0x41E70003,0x001C0000}}, // 01000001111xxx110000000000000011  bsola+ cr1
{                  "bso + CREG , NUM",{0x41E70004,0x001CFFFC}}, // 01000001111xxx11xxxxxxxxxxxxxx00  bso+ cr1, 0x4
{                 "bsol + CREG , NUM",{0x41E70005,0x001CFFFC}}, // 01000001111xxx11xxxxxxxxxxxxxx01  bsol+ cr1, 0x4
{                 "bsoa + CREG , NUM",{0x41E70006,0x001CFFFC}}, // 01000001111xxx11xxxxxxxxxxxxxx10  bsoa+ cr1, 0x4
{                "bsola + CREG , NUM",{0x41E70007,0x001CFFFC}}, // 01000001111xxx11xxxxxxxxxxxxxx11  bsola+ cr1, 0x4
{                          "bdnz NUM",{0x42000000,0x01BFFFFC}}, // 0100001xx0xxxxxxxxxxxxxxxxxxxx00  bdnz 0x0
{                         "bdnzl NUM",{0x42000001,0x01BFFFFC}}, // 0100001xx0xxxxxxxxxxxxxxxxxxxx01  bdnzl 0x0
{                         "bdnza NUM",{0x42000002,0x01BFFFFC}}, // 0100001xx0xxxxxxxxxxxxxxxxxxxx10  bdnza 0x0
{                        "bdnzla NUM",{0x42000003,0x01BFFFFC}}, // 0100001xx0xxxxxxxxxxxxxxxxxxxx11  bdnzla 0x0
{                              "bdnz",{0x42010000,0x01BF0000}}, // 0100001xx0xxxxxx0000000000000000  bdnz
{                             "bdnzl",{0x42010001,0x01BF0000}}, // 0100001xx0xxxxxx0000000000000001  bdnzl
{                             "bdnza",{0x42010002,0x01BF0000}}, // 0100001xx0xxxxxx0000000000000010  bdnza
{                            "bdnzla",{0x42010003,0x01BF0000}}, // 0100001xx0xxxxxx0000000000000011  bdnzla
{                           "bdz NUM",{0x42400000,0x01BFFFFC}}, // 0100001xx1xxxxxxxxxxxxxxxxxxxx00  bdz 0x0
{                          "bdzl NUM",{0x42400001,0x01BFFFFC}}, // 0100001xx1xxxxxxxxxxxxxxxxxxxx01  bdzl 0x0
{                          "bdza NUM",{0x42400002,0x01BFFFFC}}, // 0100001xx1xxxxxxxxxxxxxxxxxxxx10  bdza 0x0
{                         "bdzla NUM",{0x42400003,0x01BFFFFC}}, // 0100001xx1xxxxxxxxxxxxxxxxxxxx11  bdzla 0x0
{                               "bdz",{0x42410000,0x01BF0000}}, // 0100001xx1xxxxxx0000000000000000  bdz
{                              "bdzl",{0x42410001,0x01BF0000}}, // 0100001xx1xxxxxx0000000000000001  bdzl
{                              "bdza",{0x42410002,0x01BF0000}}, // 0100001xx1xxxxxx0000000000000010  bdza
{                             "bdzla",{0x42410003,0x01BF0000}}, // 0100001xx1xxxxxx0000000000000011  bdzla
{                        "bdnz - NUM",{0x43000000,0x001FFFFC}}, // 01000011000xxxxxxxxxxxxxxxxxxx00  bdnz- 0x0
{                       "bdnzl - NUM",{0x43000001,0x001FFFFC}}, // 01000011000xxxxxxxxxxxxxxxxxxx01  bdnzl- 0x0
{                       "bdnza - NUM",{0x43000002,0x001FFFFC}}, // 01000011000xxxxxxxxxxxxxxxxxxx10  bdnza- 0x0
{                      "bdnzla - NUM",{0x43000003,0x001FFFFC}}, // 01000011000xxxxxxxxxxxxxxxxxxx11  bdnzla- 0x0
{                            "bdnz -",{0x43010000,0x001F0000}}, // 01000011000xxxxx0000000000000000  bdnz-
{                           "bdnzl -",{0x43010001,0x001F0000}}, // 01000011000xxxxx0000000000000001  bdnzl-
{                           "bdnza -",{0x43010002,0x001F0000}}, // 01000011000xxxxx0000000000000010  bdnza-
{                          "bdnzla -",{0x43010003,0x001F0000}}, // 01000011000xxxxx0000000000000011  bdnzla-
{                        "bdnz + NUM",{0x43200000,0x001FFFFC}}, // 01000011001xxxxxxxxxxxxxxxxxxx00  bdnz+ 0x0
{                       "bdnzl + NUM",{0x43200001,0x001FFFFC}}, // 01000011001xxxxxxxxxxxxxxxxxxx01  bdnzl+ 0x0
{                       "bdnza + NUM",{0x43200002,0x001FFFFC}}, // 01000011001xxxxxxxxxxxxxxxxxxx10  bdnza+ 0x0
{                      "bdnzla + NUM",{0x43200003,0x001FFFFC}}, // 01000011001xxxxxxxxxxxxxxxxxxx11  bdnzla+ 0x0
{                            "bdnz +",{0x43210000,0x001F0000}}, // 01000011001xxxxx0000000000000000  bdnz+
{                           "bdnzl +",{0x43210001,0x001F0000}}, // 01000011001xxxxx0000000000000001  bdnzl+
{                           "bdnza +",{0x43210002,0x001F0000}}, // 01000011001xxxxx0000000000000010  bdnza+
{                          "bdnzla +",{0x43210003,0x001F0000}}, // 01000011001xxxxx0000000000000011  bdnzla+
{                         "bdz - NUM",{0x43400000,0x001FFFFC}}, // 01000011010xxxxxxxxxxxxxxxxxxx00  bdz- 0x0
{                        "bdzl - NUM",{0x43400001,0x001FFFFC}}, // 01000011010xxxxxxxxxxxxxxxxxxx01  bdzl- 0x0
{                        "bdza - NUM",{0x43400002,0x001FFFFC}}, // 01000011010xxxxxxxxxxxxxxxxxxx10  bdza- 0x0
{                       "bdzla - NUM",{0x43400003,0x001FFFFC}}, // 01000011010xxxxxxxxxxxxxxxxxxx11  bdzla- 0x0
{                             "bdz -",{0x43410000,0x001F0000}}, // 01000011010xxxxx0000000000000000  bdz-
{                            "bdzl -",{0x43410001,0x001F0000}}, // 01000011010xxxxx0000000000000001  bdzl-
{                            "bdza -",{0x43410002,0x001F0000}}, // 01000011010xxxxx0000000000000010  bdza-
{                           "bdzla -",{0x43410003,0x001F0000}}, // 01000011010xxxxx0000000000000011  bdzla-
{                         "bdz + NUM",{0x43600000,0x001FFFFC}}, // 01000011011xxxxxxxxxxxxxxxxxxx00  bdz+ 0x0
{                        "bdzl + NUM",{0x43600001,0x001FFFFC}}, // 01000011011xxxxxxxxxxxxxxxxxxx01  bdzl+ 0x0
{                        "bdza + NUM",{0x43600002,0x001FFFFC}}, // 01000011011xxxxxxxxxxxxxxxxxxx10  bdza+ 0x0
{                       "bdzla + NUM",{0x43600003,0x001FFFFC}}, // 01000011011xxxxxxxxxxxxxxxxxxx11  bdzla+ 0x0
{                             "bdz +",{0x43610000,0x001F0000}}, // 01000011011xxxxx0000000000000000  bdz+
{                            "bdzl +",{0x43610001,0x001F0000}}, // 01000011011xxxxx0000000000000001  bdzl+
{                            "bdza +",{0x43610002,0x001F0000}}, // 01000011011xxxxx0000000000000010  bdza+
{                           "bdzla +",{0x43610003,0x001F0000}}, // 01000011011xxxxx0000000000000011  bdzla+
{                                "sc",{0x44000002,0x03FFF01D}}, // 010001xxxxxxxxxxxxxx0000000xxx1x  sc
{                            "sc NUM",{0x44000022,0x03FFFFFD}}, // 010001xxxxxxxxxxxxxxxxxxxxxxxx1x  sc 1
{                             "b NUM",{0x48000000,0x03FFFFFC}}, // 010010xxxxxxxxxxxxxxxxxxxxxxxx00  b 0x0
{                            "bl NUM",{0x48000001,0x03FFFFFC}}, // 010010xxxxxxxxxxxxxxxxxxxxxxxx01  bl 0x0
{                            "ba NUM",{0x48000002,0x03FFFFFC}}, // 010010xxxxxxxxxxxxxxxxxxxxxxxx10  ba 0x0
{                           "bla NUM",{0x48000003,0x03FFFFFC}}, // 010010xxxxxxxxxxxxxxxxxxxxxxxx11  bla 0x0
{                  "mcrf CREG , CREG",{0x4C000000,0x039C0000}}, // 010011xxx00xxx000000000000000000  mcrf cr0, cr0
{                      "bdnzflr FLAG",{0x4C000020,0x00230000}}, // 0100110000x000xx0000000000100000  bdnzflr lt
{                     "bdnzflrl FLAG",{0x4C000021,0x00230000}}, // 0100110000x000xx0000000000100001  bdnzflrl lt
{                              "rfid",{0x4C000024,0x00000000}}, // 01001100000000000000000000100100  rfid
{                   "crnot NUM , NUM",{0x4C000042,0x03FFF800}}, // 010011xxxxxxxxxxxxxxx00001000010  crnot 0, 0
{                             "rfmci",{0x4C00004C,0x00000000}}, // 01001100000000000000000001001100  rfmci
{                              "rfdi",{0x4C00004E,0x00000000}}, // 01001100000000000000000001001110  rfdi
{                               "rfi",{0x4C000064,0x00000000}}, // 01001100000000000000000001100100  rfi
{                              "rfci",{0x4C000066,0x00000000}}, // 01001100000000000000000001100110  rfci
{            "crandc NUM , NUM , NUM",{0x4C000102,0x03FFF800}}, // 010011xxxxxxxxxxxxxxx00100000010  crandc 0, 0, 0
{                             "isync",{0x4C00012C,0x00000000}}, // 01001100000000000000000100101100  isync
{                         "crclr NUM",{0x4C000182,0x03FFF800}}, // 010011xxxxxxxxxxxxxxx00110000010  crclr 0
{            "crnand NUM , NUM , NUM",{0x4C0001C2,0x03FFF800}}, // 010011xxxxxxxxxxxxxxx00111000010  crnand 0, 0, 0
{             "crand NUM , NUM , NUM",{0x4C000202,0x03FFF800}}, // 010011xxxxxxxxxxxxxxx01000000010  crand 0, 0, 0
{                         "crset NUM",{0x4C000242,0x03FFF800}}, // 010011xxxxxxxxxxxxxxx01001000010  crset 0
{             "crorc NUM , NUM , NUM",{0x4C000342,0x03FFF800}}, // 010011xxxxxxxxxxxxxxx01101000010  crorc 0, 0, 0
{                  "crmove NUM , NUM",{0x4C000382,0x03FFF800}}, // 010011xxxxxxxxxxxxxxx01110000010  crmove 0, 0
{                     "bdnzfctr FLAG",{0x4C000420,0x00230000}}, // 0100110000x000xx0000010000100000  bdnzfctr lt
{                    "bdnzfctrl FLAG",{0x4C000421,0x00230000}}, // 0100110000x000xx0000010000100001  bdnzfctrl lt
{                "bdnzflr FLAG , NUM",{0x4C000820,0x00231800}}, // 0100110000x000xx000xx00000100000  bdnzflr lt, 0x4
{               "bdnzflrl FLAG , NUM",{0x4C000821,0x00231800}}, // 0100110000x000xx000xx00000100001  bdnzflrl lt, 0x4
{             "crnor NUM , NUM , NUM",{0x4C000842,0x03FFF800}}, // 010011xxxxxxxxxxxxxxx00001000010  crnor 0, 0, 1
{             "crxor NUM , NUM , NUM",{0x4C000982,0x03FFF800}}, // 010011xxxxxxxxxxxxxxx00110000010  crxor 0, 0, 1
{             "creqv NUM , NUM , NUM",{0x4C000A42,0x03FFF800}}, // 010011xxxxxxxxxxxxxxx01001000010  creqv 0, 0, 1
{              "cror NUM , NUM , NUM",{0x4C000B82,0x03FFF800}}, // 010011xxxxxxxxxxxxxxx01110000010  cror 0, 0, 1
{               "bdnzfctr FLAG , NUM",{0x4C000C20,0x00231800}}, // 0100110000x000xx000xx10000100000  bdnzfctr lt, 0x4
{              "bdnzfctrl FLAG , NUM",{0x4C000C21,0x00231800}}, // 0100110000x000xx000xx10000100001  bdnzfctrl lt, 0x4
{         "bdnzflr NUM * CREG + FLAG",{0x4C040020,0x003F0000}}, // 0100110000xxxxxx0000000000100000  bdnzflr 4*cr1+lt
{        "bdnzflrl NUM * CREG + FLAG",{0x4C040021,0x003F0000}}, // 0100110000xxxxxx0000000000100001  bdnzflrl 4*cr1+lt
{        "bdnzfctr NUM * CREG + FLAG",{0x4C040420,0x003F0000}}, // 0100110000xxxxxx0000010000100000  bdnzfctr 4*cr1+lt
{       "bdnzfctrl NUM * CREG + FLAG",{0x4C040421,0x003F0000}}, // 0100110000xxxxxx0000010000100001  bdnzfctrl 4*cr1+lt
{   "bdnzflr NUM * CREG + FLAG , NUM",{0x4C040820,0x003F1800}}, // 0100110000xxxxxx000xx00000100000  bdnzflr 4*cr1+lt, 0x4
{  "bdnzflrl NUM * CREG + FLAG , NUM",{0x4C040821,0x003F1800}}, // 0100110000xxxxxx000xx00000100001  bdnzflrl 4*cr1+lt, 0x4
{  "bdnzfctr NUM * CREG + FLAG , NUM",{0x4C040C20,0x003F1800}}, // 0100110000xxxxxx000xx10000100000  bdnzfctr 4*cr1+lt, 0x4
{ "bdnzfctrl NUM * CREG + FLAG , NUM",{0x4C040C21,0x003F1800}}, // 0100110000xxxxxx000xx10000100001  bdnzfctrl 4*cr1+lt, 0x4
{                       "bdzflr FLAG",{0x4C400020,0x00230000}}, // 0100110001x000xx0000000000100000  bdzflr lt
{                      "bdzflrl FLAG",{0x4C400021,0x00230000}}, // 0100110001x000xx0000000000100001  bdzflrl lt
{                      "bdzfctr FLAG",{0x4C400420,0x00230000}}, // 0100110001x000xx0000010000100000  bdzfctr lt
{                     "bdzfctrl FLAG",{0x4C400421,0x00230000}}, // 0100110001x000xx0000010000100001  bdzfctrl lt
{                 "bdzflr FLAG , NUM",{0x4C400820,0x00231800}}, // 0100110001x000xx000xx00000100000  bdzflr lt, 0x4
{                "bdzflrl FLAG , NUM",{0x4C400821,0x00231800}}, // 0100110001x000xx000xx00000100001  bdzflrl lt, 0x4
{                "bdzfctr FLAG , NUM",{0x4C400C20,0x00231800}}, // 0100110001x000xx000xx10000100000  bdzfctr lt, 0x4
{               "bdzfctrl FLAG , NUM",{0x4C400C21,0x00231800}}, // 0100110001x000xx000xx10000100001  bdzfctrl lt, 0x4
{          "bdzflr NUM * CREG + FLAG",{0x4C440020,0x003F0000}}, // 0100110001xxxxxx0000000000100000  bdzflr 4*cr1+lt
{         "bdzflrl NUM * CREG + FLAG",{0x4C440021,0x003F0000}}, // 0100110001xxxxxx0000000000100001  bdzflrl 4*cr1+lt
{         "bdzfctr NUM * CREG + FLAG",{0x4C440420,0x003F0000}}, // 0100110001xxxxxx0000010000100000  bdzfctr 4*cr1+lt
{        "bdzfctrl NUM * CREG + FLAG",{0x4C440421,0x003F0000}}, // 0100110001xxxxxx0000010000100001  bdzfctrl 4*cr1+lt
{    "bdzflr NUM * CREG + FLAG , NUM",{0x4C440820,0x003F1800}}, // 0100110001xxxxxx000xx00000100000  bdzflr 4*cr1+lt, 0x4
{   "bdzflrl NUM * CREG + FLAG , NUM",{0x4C440821,0x003F1800}}, // 0100110001xxxxxx000xx00000100001  bdzflrl 4*cr1+lt, 0x4
{   "bdzfctr NUM * CREG + FLAG , NUM",{0x4C440C20,0x003F1800}}, // 0100110001xxxxxx000xx10000100000  bdzfctr 4*cr1+lt, 0x4
{  "bdzfctrl NUM * CREG + FLAG , NUM",{0x4C440C21,0x003F1800}}, // 0100110001xxxxxx000xx10000100001  bdzfctrl 4*cr1+lt, 0x4
{                             "bgelr",{0x4C800020,0x00200000}}, // 0100110010x000000000000000100000  bgelr
{                            "bgelrl",{0x4C800021,0x00200000}}, // 0100110010x000000000000000100001  bgelrl
{                            "bgectr",{0x4C800420,0x00200000}}, // 0100110010x000000000010000100000  bgectr
{                           "bgectrl",{0x4C800421,0x00200000}}, // 0100110010x000000000010000100001  bgectrl
{                         "bgelr NUM",{0x4C800820,0x00201800}}, // 0100110010x00000000xx00000100000  bgelr 0x4
{                        "bgelrl NUM",{0x4C800821,0x00201800}}, // 0100110010x00000000xx00000100001  bgelrl 0x4
{                        "bgectr NUM",{0x4C800C20,0x00201800}}, // 0100110010x00000000xx10000100000  bgectr 0x4
{                       "bgectrl NUM",{0x4C800C21,0x00201800}}, // 0100110010x00000000xx10000100001  bgectrl 0x4
{                             "blelr",{0x4C810020,0x00200000}}, // 0100110010x000010000000000100000  blelr
{                            "blelrl",{0x4C810021,0x00200000}}, // 0100110010x000010000000000100001  blelrl
{                            "blectr",{0x4C810420,0x00200000}}, // 0100110010x000010000010000100000  blectr
{                           "blectrl",{0x4C810421,0x00200000}}, // 0100110010x000010000010000100001  blectrl
{                         "blelr NUM",{0x4C810820,0x00201800}}, // 0100110010x00001000xx00000100000  blelr 0x4
{                        "blelrl NUM",{0x4C810821,0x00201800}}, // 0100110010x00001000xx00000100001  blelrl 0x4
{                        "blectr NUM",{0x4C810C20,0x00201800}}, // 0100110010x00001000xx10000100000  blectr 0x4
{                       "blectrl NUM",{0x4C810C21,0x00201800}}, // 0100110010x00001000xx10000100001  blectrl 0x4
{                             "bnelr",{0x4C820020,0x00200000}}, // 0100110010x000100000000000100000  bnelr
{                            "bnelrl",{0x4C820021,0x00200000}}, // 0100110010x000100000000000100001  bnelrl
{                            "bnectr",{0x4C820420,0x00200000}}, // 0100110010x000100000010000100000  bnectr
{                           "bnectrl",{0x4C820421,0x00200000}}, // 0100110010x000100000010000100001  bnectrl
{                         "bnelr NUM",{0x4C820820,0x00201800}}, // 0100110010x00010000xx00000100000  bnelr 0x4
{                        "bnelrl NUM",{0x4C820821,0x00201800}}, // 0100110010x00010000xx00000100001  bnelrl 0x4
{                        "bnectr NUM",{0x4C820C20,0x00201800}}, // 0100110010x00010000xx10000100000  bnectr 0x4
{                       "bnectrl NUM",{0x4C820C21,0x00201800}}, // 0100110010x00010000xx10000100001  bnectrl 0x4
{                             "bnslr",{0x4C830020,0x00200000}}, // 0100110010x000110000000000100000  bnslr
{                            "bnslrl",{0x4C830021,0x00200000}}, // 0100110010x000110000000000100001  bnslrl
{                            "bnsctr",{0x4C830420,0x00200000}}, // 0100110010x000110000010000100000  bnsctr
{                           "bnsctrl",{0x4C830421,0x00200000}}, // 0100110010x000110000010000100001  bnsctrl
{                         "bnslr NUM",{0x4C830820,0x00201800}}, // 0100110010x00011000xx00000100000  bnslr 0x4
{                        "bnslrl NUM",{0x4C830821,0x00201800}}, // 0100110010x00011000xx00000100001  bnslrl 0x4
{                        "bnsctr NUM",{0x4C830C20,0x00201800}}, // 0100110010x00011000xx10000100000  bnsctr 0x4
{                       "bnsctrl NUM",{0x4C830C21,0x00201800}}, // 0100110010x00011000xx10000100001  bnsctrl 0x4
{                        "bgelr CREG",{0x4C840020,0x003C0000}}, // 0100110010xxxx000000000000100000  bgelr cr1
{                       "bgelrl CREG",{0x4C840021,0x003C0000}}, // 0100110010xxxx000000000000100001  bgelrl cr1
{                       "bgectr CREG",{0x4C840420,0x003C0000}}, // 0100110010xxxx000000010000100000  bgectr cr1
{                      "bgectrl CREG",{0x4C840421,0x003C0000}}, // 0100110010xxxx000000010000100001  bgectrl cr1
{                  "bgelr CREG , NUM",{0x4C840820,0x003C1800}}, // 0100110010xxxx00000xx00000100000  bgelr cr1, 0x4
{                 "bgelrl CREG , NUM",{0x4C840821,0x003C1800}}, // 0100110010xxxx00000xx00000100001  bgelrl cr1, 0x4
{                 "bgectr CREG , NUM",{0x4C840C20,0x003C1800}}, // 0100110010xxxx00000xx10000100000  bgectr cr1, 0x4
{                "bgectrl CREG , NUM",{0x4C840C21,0x003C1800}}, // 0100110010xxxx00000xx10000100001  bgectrl cr1, 0x4
{                        "blelr CREG",{0x4C850020,0x003C0000}}, // 0100110010xxxx010000000000100000  blelr cr1
{                       "blelrl CREG",{0x4C850021,0x003C0000}}, // 0100110010xxxx010000000000100001  blelrl cr1
{                       "blectr CREG",{0x4C850420,0x003C0000}}, // 0100110010xxxx010000010000100000  blectr cr1
{                      "blectrl CREG",{0x4C850421,0x003C0000}}, // 0100110010xxxx010000010000100001  blectrl cr1
{                  "blelr CREG , NUM",{0x4C850820,0x003C1800}}, // 0100110010xxxx01000xx00000100000  blelr cr1, 0x4
{                 "blelrl CREG , NUM",{0x4C850821,0x003C1800}}, // 0100110010xxxx01000xx00000100001  blelrl cr1, 0x4
{                 "blectr CREG , NUM",{0x4C850C20,0x003C1800}}, // 0100110010xxxx01000xx10000100000  blectr cr1, 0x4
{                "blectrl CREG , NUM",{0x4C850C21,0x003C1800}}, // 0100110010xxxx01000xx10000100001  blectrl cr1, 0x4
{                        "bnelr CREG",{0x4C860020,0x003C0000}}, // 0100110010xxxx100000000000100000  bnelr cr1
{                       "bnelrl CREG",{0x4C860021,0x003C0000}}, // 0100110010xxxx100000000000100001  bnelrl cr1
{                       "bnectr CREG",{0x4C860420,0x003C0000}}, // 0100110010xxxx100000010000100000  bnectr cr1
{                      "bnectrl CREG",{0x4C860421,0x003C0000}}, // 0100110010xxxx100000010000100001  bnectrl cr1
{                  "bnelr CREG , NUM",{0x4C860820,0x003C1800}}, // 0100110010xxxx10000xx00000100000  bnelr cr1, 0x4
{                 "bnelrl CREG , NUM",{0x4C860821,0x003C1800}}, // 0100110010xxxx10000xx00000100001  bnelrl cr1, 0x4
{                 "bnectr CREG , NUM",{0x4C860C20,0x003C1800}}, // 0100110010xxxx10000xx10000100000  bnectr cr1, 0x4
{                "bnectrl CREG , NUM",{0x4C860C21,0x003C1800}}, // 0100110010xxxx10000xx10000100001  bnectrl cr1, 0x4
{                        "bnslr CREG",{0x4C870020,0x003C0000}}, // 0100110010xxxx110000000000100000  bnslr cr1
{                       "bnslrl CREG",{0x4C870021,0x003C0000}}, // 0100110010xxxx110000000000100001  bnslrl cr1
{                       "bnsctr CREG",{0x4C870420,0x003C0000}}, // 0100110010xxxx110000010000100000  bnsctr cr1
{                      "bnsctrl CREG",{0x4C870421,0x003C0000}}, // 0100110010xxxx110000010000100001  bnsctrl cr1
{                  "bnslr CREG , NUM",{0x4C870820,0x003C1800}}, // 0100110010xxxx11000xx00000100000  bnslr cr1, 0x4
{                 "bnslrl CREG , NUM",{0x4C870821,0x003C1800}}, // 0100110010xxxx11000xx00000100001  bnslrl cr1, 0x4
{                 "bnsctr CREG , NUM",{0x4C870C20,0x003C1800}}, // 0100110010xxxx11000xx10000100000  bnsctr cr1, 0x4
{                "bnsctrl CREG , NUM",{0x4C870C21,0x003C1800}}, // 0100110010xxxx11000xx10000100001  bnsctrl cr1, 0x4
{                           "bgelr -",{0x4CC00020,0x00000000}}, // 01001100110000000000000000100000  bgelr-
{                          "bgelrl -",{0x4CC00021,0x00000000}}, // 01001100110000000000000000100001  bgelrl-
{                          "bgectr -",{0x4CC00420,0x00000000}}, // 01001100110000000000010000100000  bgectr-
{                         "bgectrl -",{0x4CC00421,0x00000000}}, // 01001100110000000000010000100001  bgectrl-
{                       "bgelr - NUM",{0x4CC00820,0x00001800}}, // 0100110011000000000xx00000100000  bgelr- 0x4
{                      "bgelrl - NUM",{0x4CC00821,0x00001800}}, // 0100110011000000000xx00000100001  bgelrl- 0x4
{                      "bgectr - NUM",{0x4CC00C20,0x00001800}}, // 0100110011000000000xx10000100000  bgectr- 0x4
{                     "bgectrl - NUM",{0x4CC00C21,0x00001800}}, // 0100110011000000000xx10000100001  bgectrl- 0x4
{                           "blelr -",{0x4CC10020,0x00000000}}, // 01001100110000010000000000100000  blelr-
{                          "blelrl -",{0x4CC10021,0x00000000}}, // 01001100110000010000000000100001  blelrl-
{                          "blectr -",{0x4CC10420,0x00000000}}, // 01001100110000010000010000100000  blectr-
{                         "blectrl -",{0x4CC10421,0x00000000}}, // 01001100110000010000010000100001  blectrl-
{                       "blelr - NUM",{0x4CC10820,0x00001800}}, // 0100110011000001000xx00000100000  blelr- 0x4
{                      "blelrl - NUM",{0x4CC10821,0x00001800}}, // 0100110011000001000xx00000100001  blelrl- 0x4
{                      "blectr - NUM",{0x4CC10C20,0x00001800}}, // 0100110011000001000xx10000100000  blectr- 0x4
{                     "blectrl - NUM",{0x4CC10C21,0x00001800}}, // 0100110011000001000xx10000100001  blectrl- 0x4
{                           "bnelr -",{0x4CC20020,0x00000000}}, // 01001100110000100000000000100000  bnelr-
{                          "bnelrl -",{0x4CC20021,0x00000000}}, // 01001100110000100000000000100001  bnelrl-
{                          "bnectr -",{0x4CC20420,0x00000000}}, // 01001100110000100000010000100000  bnectr-
{                         "bnectrl -",{0x4CC20421,0x00000000}}, // 01001100110000100000010000100001  bnectrl-
{                       "bnelr - NUM",{0x4CC20820,0x00001800}}, // 0100110011000010000xx00000100000  bnelr- 0x4
{                      "bnelrl - NUM",{0x4CC20821,0x00001800}}, // 0100110011000010000xx00000100001  bnelrl- 0x4
{                      "bnectr - NUM",{0x4CC20C20,0x00001800}}, // 0100110011000010000xx10000100000  bnectr- 0x4
{                     "bnectrl - NUM",{0x4CC20C21,0x00001800}}, // 0100110011000010000xx10000100001  bnectrl- 0x4
{                           "bnslr -",{0x4CC30020,0x00000000}}, // 01001100110000110000000000100000  bnslr-
{                          "bnslrl -",{0x4CC30021,0x00000000}}, // 01001100110000110000000000100001  bnslrl-
{                          "bnsctr -",{0x4CC30420,0x00000000}}, // 01001100110000110000010000100000  bnsctr-
{                         "bnsctrl -",{0x4CC30421,0x00000000}}, // 01001100110000110000010000100001  bnsctrl-
{                       "bnslr - NUM",{0x4CC30820,0x00001800}}, // 0100110011000011000xx00000100000  bnslr- 0x4
{                      "bnslrl - NUM",{0x4CC30821,0x00001800}}, // 0100110011000011000xx00000100001  bnslrl- 0x4
{                      "bnsctr - NUM",{0x4CC30C20,0x00001800}}, // 0100110011000011000xx10000100000  bnsctr- 0x4
{                     "bnsctrl - NUM",{0x4CC30C21,0x00001800}}, // 0100110011000011000xx10000100001  bnsctrl- 0x4
{                      "bgelr - CREG",{0x4CC40020,0x001C0000}}, // 01001100110xxx000000000000100000  bgelr- cr1
{                     "bgelrl - CREG",{0x4CC40021,0x001C0000}}, // 01001100110xxx000000000000100001  bgelrl- cr1
{                     "bgectr - CREG",{0x4CC40420,0x001C0000}}, // 01001100110xxx000000010000100000  bgectr- cr1
{                    "bgectrl - CREG",{0x4CC40421,0x001C0000}}, // 01001100110xxx000000010000100001  bgectrl- cr1
{                "bgelr - CREG , NUM",{0x4CC40820,0x001C1800}}, // 01001100110xxx00000xx00000100000  bgelr- cr1, 0x4
{               "bgelrl - CREG , NUM",{0x4CC40821,0x001C1800}}, // 01001100110xxx00000xx00000100001  bgelrl- cr1, 0x4
{               "bgectr - CREG , NUM",{0x4CC40C20,0x001C1800}}, // 01001100110xxx00000xx10000100000  bgectr- cr1, 0x4
{              "bgectrl - CREG , NUM",{0x4CC40C21,0x001C1800}}, // 01001100110xxx00000xx10000100001  bgectrl- cr1, 0x4
{                      "blelr - CREG",{0x4CC50020,0x001C0000}}, // 01001100110xxx010000000000100000  blelr- cr1
{                     "blelrl - CREG",{0x4CC50021,0x001C0000}}, // 01001100110xxx010000000000100001  blelrl- cr1
{                     "blectr - CREG",{0x4CC50420,0x001C0000}}, // 01001100110xxx010000010000100000  blectr- cr1
{                    "blectrl - CREG",{0x4CC50421,0x001C0000}}, // 01001100110xxx010000010000100001  blectrl- cr1
{                "blelr - CREG , NUM",{0x4CC50820,0x001C1800}}, // 01001100110xxx01000xx00000100000  blelr- cr1, 0x4
{               "blelrl - CREG , NUM",{0x4CC50821,0x001C1800}}, // 01001100110xxx01000xx00000100001  blelrl- cr1, 0x4
{               "blectr - CREG , NUM",{0x4CC50C20,0x001C1800}}, // 01001100110xxx01000xx10000100000  blectr- cr1, 0x4
{              "blectrl - CREG , NUM",{0x4CC50C21,0x001C1800}}, // 01001100110xxx01000xx10000100001  blectrl- cr1, 0x4
{                      "bnelr - CREG",{0x4CC60020,0x001C0000}}, // 01001100110xxx100000000000100000  bnelr- cr1
{                     "bnelrl - CREG",{0x4CC60021,0x001C0000}}, // 01001100110xxx100000000000100001  bnelrl- cr1
{                     "bnectr - CREG",{0x4CC60420,0x001C0000}}, // 01001100110xxx100000010000100000  bnectr- cr1
{                    "bnectrl - CREG",{0x4CC60421,0x001C0000}}, // 01001100110xxx100000010000100001  bnectrl- cr1
{                "bnelr - CREG , NUM",{0x4CC60820,0x001C1800}}, // 01001100110xxx10000xx00000100000  bnelr- cr1, 0x4
{               "bnelrl - CREG , NUM",{0x4CC60821,0x001C1800}}, // 01001100110xxx10000xx00000100001  bnelrl- cr1, 0x4
{               "bnectr - CREG , NUM",{0x4CC60C20,0x001C1800}}, // 01001100110xxx10000xx10000100000  bnectr- cr1, 0x4
{              "bnectrl - CREG , NUM",{0x4CC60C21,0x001C1800}}, // 01001100110xxx10000xx10000100001  bnectrl- cr1, 0x4
{                      "bnslr - CREG",{0x4CC70020,0x001C0000}}, // 01001100110xxx110000000000100000  bnslr- cr1
{                     "bnslrl - CREG",{0x4CC70021,0x001C0000}}, // 01001100110xxx110000000000100001  bnslrl- cr1
{                     "bnsctr - CREG",{0x4CC70420,0x001C0000}}, // 01001100110xxx110000010000100000  bnsctr- cr1
{                    "bnsctrl - CREG",{0x4CC70421,0x001C0000}}, // 01001100110xxx110000010000100001  bnsctrl- cr1
{                "bnslr - CREG , NUM",{0x4CC70820,0x001C1800}}, // 01001100110xxx11000xx00000100000  bnslr- cr1, 0x4
{               "bnslrl - CREG , NUM",{0x4CC70821,0x001C1800}}, // 01001100110xxx11000xx00000100001  bnslrl- cr1, 0x4
{               "bnsctr - CREG , NUM",{0x4CC70C20,0x001C1800}}, // 01001100110xxx11000xx10000100000  bnsctr- cr1, 0x4
{              "bnsctrl - CREG , NUM",{0x4CC70C21,0x001C1800}}, // 01001100110xxx11000xx10000100001  bnsctrl- cr1, 0x4
{                           "bgelr +",{0x4CE00020,0x00000000}}, // 01001100111000000000000000100000  bgelr+
{                          "bgelrl +",{0x4CE00021,0x00000000}}, // 01001100111000000000000000100001  bgelrl+
{                          "bgectr +",{0x4CE00420,0x00000000}}, // 01001100111000000000010000100000  bgectr+
{                         "bgectrl +",{0x4CE00421,0x00000000}}, // 01001100111000000000010000100001  bgectrl+
{                       "bgelr + NUM",{0x4CE00820,0x00001800}}, // 0100110011100000000xx00000100000  bgelr+ 0x4
{                      "bgelrl + NUM",{0x4CE00821,0x00001800}}, // 0100110011100000000xx00000100001  bgelrl+ 0x4
{                      "bgectr + NUM",{0x4CE00C20,0x00001800}}, // 0100110011100000000xx10000100000  bgectr+ 0x4
{                     "bgectrl + NUM",{0x4CE00C21,0x00001800}}, // 0100110011100000000xx10000100001  bgectrl+ 0x4
{                           "blelr +",{0x4CE10020,0x00000000}}, // 01001100111000010000000000100000  blelr+
{                          "blelrl +",{0x4CE10021,0x00000000}}, // 01001100111000010000000000100001  blelrl+
{                          "blectr +",{0x4CE10420,0x00000000}}, // 01001100111000010000010000100000  blectr+
{                         "blectrl +",{0x4CE10421,0x00000000}}, // 01001100111000010000010000100001  blectrl+
{                       "blelr + NUM",{0x4CE10820,0x00001800}}, // 0100110011100001000xx00000100000  blelr+ 0x4
{                      "blelrl + NUM",{0x4CE10821,0x00001800}}, // 0100110011100001000xx00000100001  blelrl+ 0x4
{                      "blectr + NUM",{0x4CE10C20,0x00001800}}, // 0100110011100001000xx10000100000  blectr+ 0x4
{                     "blectrl + NUM",{0x4CE10C21,0x00001800}}, // 0100110011100001000xx10000100001  blectrl+ 0x4
{                           "bnelr +",{0x4CE20020,0x00000000}}, // 01001100111000100000000000100000  bnelr+
{                          "bnelrl +",{0x4CE20021,0x00000000}}, // 01001100111000100000000000100001  bnelrl+
{                          "bnectr +",{0x4CE20420,0x00000000}}, // 01001100111000100000010000100000  bnectr+
{                         "bnectrl +",{0x4CE20421,0x00000000}}, // 01001100111000100000010000100001  bnectrl+
{                       "bnelr + NUM",{0x4CE20820,0x00001800}}, // 0100110011100010000xx00000100000  bnelr+ 0x4
{                      "bnelrl + NUM",{0x4CE20821,0x00001800}}, // 0100110011100010000xx00000100001  bnelrl+ 0x4
{                      "bnectr + NUM",{0x4CE20C20,0x00001800}}, // 0100110011100010000xx10000100000  bnectr+ 0x4
{                     "bnectrl + NUM",{0x4CE20C21,0x00001800}}, // 0100110011100010000xx10000100001  bnectrl+ 0x4
{                           "bnslr +",{0x4CE30020,0x00000000}}, // 01001100111000110000000000100000  bnslr+
{                          "bnslrl +",{0x4CE30021,0x00000000}}, // 01001100111000110000000000100001  bnslrl+
{                          "bnsctr +",{0x4CE30420,0x00000000}}, // 01001100111000110000010000100000  bnsctr+
{                         "bnsctrl +",{0x4CE30421,0x00000000}}, // 01001100111000110000010000100001  bnsctrl+
{                       "bnslr + NUM",{0x4CE30820,0x00001800}}, // 0100110011100011000xx00000100000  bnslr+ 0x4
{                      "bnslrl + NUM",{0x4CE30821,0x00001800}}, // 0100110011100011000xx00000100001  bnslrl+ 0x4
{                      "bnsctr + NUM",{0x4CE30C20,0x00001800}}, // 0100110011100011000xx10000100000  bnsctr+ 0x4
{                     "bnsctrl + NUM",{0x4CE30C21,0x00001800}}, // 0100110011100011000xx10000100001  bnsctrl+ 0x4
{                      "bgelr + CREG",{0x4CE40020,0x001C0000}}, // 01001100111xxx000000000000100000  bgelr+ cr1
{                     "bgelrl + CREG",{0x4CE40021,0x001C0000}}, // 01001100111xxx000000000000100001  bgelrl+ cr1
{                     "bgectr + CREG",{0x4CE40420,0x001C0000}}, // 01001100111xxx000000010000100000  bgectr+ cr1
{                    "bgectrl + CREG",{0x4CE40421,0x001C0000}}, // 01001100111xxx000000010000100001  bgectrl+ cr1
{                "bgelr + CREG , NUM",{0x4CE40820,0x001C1800}}, // 01001100111xxx00000xx00000100000  bgelr+ cr1, 0x4
{               "bgelrl + CREG , NUM",{0x4CE40821,0x001C1800}}, // 01001100111xxx00000xx00000100001  bgelrl+ cr1, 0x4
{               "bgectr + CREG , NUM",{0x4CE40C20,0x001C1800}}, // 01001100111xxx00000xx10000100000  bgectr+ cr1, 0x4
{              "bgectrl + CREG , NUM",{0x4CE40C21,0x001C1800}}, // 01001100111xxx00000xx10000100001  bgectrl+ cr1, 0x4
{                      "blelr + CREG",{0x4CE50020,0x001C0000}}, // 01001100111xxx010000000000100000  blelr+ cr1
{                     "blelrl + CREG",{0x4CE50021,0x001C0000}}, // 01001100111xxx010000000000100001  blelrl+ cr1
{                     "blectr + CREG",{0x4CE50420,0x001C0000}}, // 01001100111xxx010000010000100000  blectr+ cr1
{                    "blectrl + CREG",{0x4CE50421,0x001C0000}}, // 01001100111xxx010000010000100001  blectrl+ cr1
{                "blelr + CREG , NUM",{0x4CE50820,0x001C1800}}, // 01001100111xxx01000xx00000100000  blelr+ cr1, 0x4
{               "blelrl + CREG , NUM",{0x4CE50821,0x001C1800}}, // 01001100111xxx01000xx00000100001  blelrl+ cr1, 0x4
{               "blectr + CREG , NUM",{0x4CE50C20,0x001C1800}}, // 01001100111xxx01000xx10000100000  blectr+ cr1, 0x4
{              "blectrl + CREG , NUM",{0x4CE50C21,0x001C1800}}, // 01001100111xxx01000xx10000100001  blectrl+ cr1, 0x4
{                      "bnelr + CREG",{0x4CE60020,0x001C0000}}, // 01001100111xxx100000000000100000  bnelr+ cr1
{                     "bnelrl + CREG",{0x4CE60021,0x001C0000}}, // 01001100111xxx100000000000100001  bnelrl+ cr1
{                     "bnectr + CREG",{0x4CE60420,0x001C0000}}, // 01001100111xxx100000010000100000  bnectr+ cr1
{                    "bnectrl + CREG",{0x4CE60421,0x001C0000}}, // 01001100111xxx100000010000100001  bnectrl+ cr1
{                "bnelr + CREG , NUM",{0x4CE60820,0x001C1800}}, // 01001100111xxx10000xx00000100000  bnelr+ cr1, 0x4
{               "bnelrl + CREG , NUM",{0x4CE60821,0x001C1800}}, // 01001100111xxx10000xx00000100001  bnelrl+ cr1, 0x4
{               "bnectr + CREG , NUM",{0x4CE60C20,0x001C1800}}, // 01001100111xxx10000xx10000100000  bnectr+ cr1, 0x4
{              "bnectrl + CREG , NUM",{0x4CE60C21,0x001C1800}}, // 01001100111xxx10000xx10000100001  bnectrl+ cr1, 0x4
{                      "bnslr + CREG",{0x4CE70020,0x001C0000}}, // 01001100111xxx110000000000100000  bnslr+ cr1
{                     "bnslrl + CREG",{0x4CE70021,0x001C0000}}, // 01001100111xxx110000000000100001  bnslrl+ cr1
{                     "bnsctr + CREG",{0x4CE70420,0x001C0000}}, // 01001100111xxx110000010000100000  bnsctr+ cr1
{                    "bnsctrl + CREG",{0x4CE70421,0x001C0000}}, // 01001100111xxx110000010000100001  bnsctrl+ cr1
{                "bnslr + CREG , NUM",{0x4CE70820,0x001C1800}}, // 01001100111xxx11000xx00000100000  bnslr+ cr1, 0x4
{               "bnslrl + CREG , NUM",{0x4CE70821,0x001C1800}}, // 01001100111xxx11000xx00000100001  bnslrl+ cr1, 0x4
{               "bnsctr + CREG , NUM",{0x4CE70C20,0x001C1800}}, // 01001100111xxx11000xx10000100000  bnsctr+ cr1, 0x4
{              "bnsctrl + CREG , NUM",{0x4CE70C21,0x001C1800}}, // 01001100111xxx11000xx10000100001  bnsctrl+ cr1, 0x4
{                      "bdnztlr FLAG",{0x4D000020,0x00230000}}, // 0100110100x000xx0000000000100000  bdnztlr lt
{                     "bdnztlrl FLAG",{0x4D000021,0x00230000}}, // 0100110100x000xx0000000000100001  bdnztlrl lt
{                     "bdnztctr FLAG",{0x4D000420,0x00230000}}, // 0100110100x000xx0000010000100000  bdnztctr lt
{                    "bdnztctrl FLAG",{0x4D000421,0x00230000}}, // 0100110100x000xx0000010000100001  bdnztctrl lt
{                "bdnztlr FLAG , NUM",{0x4D000820,0x00231800}}, // 0100110100x000xx000xx00000100000  bdnztlr lt, 0x4
{               "bdnztlrl FLAG , NUM",{0x4D000821,0x00231800}}, // 0100110100x000xx000xx00000100001  bdnztlrl lt, 0x4
{               "bdnztctr FLAG , NUM",{0x4D000C20,0x00231800}}, // 0100110100x000xx000xx10000100000  bdnztctr lt, 0x4
{              "bdnztctrl FLAG , NUM",{0x4D000C21,0x00231800}}, // 0100110100x000xx000xx10000100001  bdnztctrl lt, 0x4
{         "bdnztlr NUM * CREG + FLAG",{0x4D040020,0x003F0000}}, // 0100110100xxxxxx0000000000100000  bdnztlr 4*cr1+lt
{        "bdnztlrl NUM * CREG + FLAG",{0x4D040021,0x003F0000}}, // 0100110100xxxxxx0000000000100001  bdnztlrl 4*cr1+lt
{        "bdnztctr NUM * CREG + FLAG",{0x4D040420,0x003F0000}}, // 0100110100xxxxxx0000010000100000  bdnztctr 4*cr1+lt
{       "bdnztctrl NUM * CREG + FLAG",{0x4D040421,0x003F0000}}, // 0100110100xxxxxx0000010000100001  bdnztctrl 4*cr1+lt
{   "bdnztlr NUM * CREG + FLAG , NUM",{0x4D040820,0x003F1800}}, // 0100110100xxxxxx000xx00000100000  bdnztlr 4*cr1+lt, 0x4
{  "bdnztlrl NUM * CREG + FLAG , NUM",{0x4D040821,0x003F1800}}, // 0100110100xxxxxx000xx00000100001  bdnztlrl 4*cr1+lt, 0x4
{  "bdnztctr NUM * CREG + FLAG , NUM",{0x4D040C20,0x003F1800}}, // 0100110100xxxxxx000xx10000100000  bdnztctr 4*cr1+lt, 0x4
{ "bdnztctrl NUM * CREG + FLAG , NUM",{0x4D040C21,0x003F1800}}, // 0100110100xxxxxx000xx10000100001  bdnztctrl 4*cr1+lt, 0x4
{                       "bdztlr FLAG",{0x4D400020,0x00230000}}, // 0100110101x000xx0000000000100000  bdztlr lt
{                      "bdztlrl FLAG",{0x4D400021,0x00230000}}, // 0100110101x000xx0000000000100001  bdztlrl lt
{                      "bdztctr FLAG",{0x4D400420,0x00230000}}, // 0100110101x000xx0000010000100000  bdztctr lt
{                     "bdztctrl FLAG",{0x4D400421,0x00230000}}, // 0100110101x000xx0000010000100001  bdztctrl lt
{                 "bdztlr FLAG , NUM",{0x4D400820,0x00231800}}, // 0100110101x000xx000xx00000100000  bdztlr lt, 0x4
{                "bdztlrl FLAG , NUM",{0x4D400821,0x00231800}}, // 0100110101x000xx000xx00000100001  bdztlrl lt, 0x4
{                "bdztctr FLAG , NUM",{0x4D400C20,0x00231800}}, // 0100110101x000xx000xx10000100000  bdztctr lt, 0x4
{               "bdztctrl FLAG , NUM",{0x4D400C21,0x00231800}}, // 0100110101x000xx000xx10000100001  bdztctrl lt, 0x4
{          "bdztlr NUM * CREG + FLAG",{0x4D440020,0x003F0000}}, // 0100110101xxxxxx0000000000100000  bdztlr 4*cr1+lt
{         "bdztlrl NUM * CREG + FLAG",{0x4D440021,0x003F0000}}, // 0100110101xxxxxx0000000000100001  bdztlrl 4*cr1+lt
{         "bdztctr NUM * CREG + FLAG",{0x4D440420,0x003F0000}}, // 0100110101xxxxxx0000010000100000  bdztctr 4*cr1+lt
{        "bdztctrl NUM * CREG + FLAG",{0x4D440421,0x003F0000}}, // 0100110101xxxxxx0000010000100001  bdztctrl 4*cr1+lt
{    "bdztlr NUM * CREG + FLAG , NUM",{0x4D440820,0x003F1800}}, // 0100110101xxxxxx000xx00000100000  bdztlr 4*cr1+lt, 0x4
{   "bdztlrl NUM * CREG + FLAG , NUM",{0x4D440821,0x003F1800}}, // 0100110101xxxxxx000xx00000100001  bdztlrl 4*cr1+lt, 0x4
{   "bdztctr NUM * CREG + FLAG , NUM",{0x4D440C20,0x003F1800}}, // 0100110101xxxxxx000xx10000100000  bdztctr 4*cr1+lt, 0x4
{  "bdztctrl NUM * CREG + FLAG , NUM",{0x4D440C21,0x003F1800}}, // 0100110101xxxxxx000xx10000100001  bdztctrl 4*cr1+lt, 0x4
{                             "bltlr",{0x4D800020,0x00200000}}, // 0100110110x000000000000000100000  bltlr
{                            "bltlrl",{0x4D800021,0x00200000}}, // 0100110110x000000000000000100001  bltlrl
{                            "bltctr",{0x4D800420,0x00200000}}, // 0100110110x000000000010000100000  bltctr
{                           "bltctrl",{0x4D800421,0x00200000}}, // 0100110110x000000000010000100001  bltctrl
{                         "bltlr NUM",{0x4D800820,0x00201800}}, // 0100110110x00000000xx00000100000  bltlr 0x4
{                        "bltlrl NUM",{0x4D800821,0x00201800}}, // 0100110110x00000000xx00000100001  bltlrl 0x4
{                        "bltctr NUM",{0x4D800C20,0x00201800}}, // 0100110110x00000000xx10000100000  bltctr 0x4
{                       "bltctrl NUM",{0x4D800C21,0x00201800}}, // 0100110110x00000000xx10000100001  bltctrl 0x4
{                             "bgtlr",{0x4D810020,0x00200000}}, // 0100110110x000010000000000100000  bgtlr
{                            "bgtlrl",{0x4D810021,0x00200000}}, // 0100110110x000010000000000100001  bgtlrl
{                            "bgtctr",{0x4D810420,0x00200000}}, // 0100110110x000010000010000100000  bgtctr
{                           "bgtctrl",{0x4D810421,0x00200000}}, // 0100110110x000010000010000100001  bgtctrl
{                         "bgtlr NUM",{0x4D810820,0x00201800}}, // 0100110110x00001000xx00000100000  bgtlr 0x4
{                        "bgtlrl NUM",{0x4D810821,0x00201800}}, // 0100110110x00001000xx00000100001  bgtlrl 0x4
{                        "bgtctr NUM",{0x4D810C20,0x00201800}}, // 0100110110x00001000xx10000100000  bgtctr 0x4
{                       "bgtctrl NUM",{0x4D810C21,0x00201800}}, // 0100110110x00001000xx10000100001  bgtctrl 0x4
{                             "beqlr",{0x4D820020,0x00200000}}, // 0100110110x000100000000000100000  beqlr
{                            "beqlrl",{0x4D820021,0x00200000}}, // 0100110110x000100000000000100001  beqlrl
{                            "beqctr",{0x4D820420,0x00200000}}, // 0100110110x000100000010000100000  beqctr
{                           "beqctrl",{0x4D820421,0x00200000}}, // 0100110110x000100000010000100001  beqctrl
{                         "beqlr NUM",{0x4D820820,0x00201800}}, // 0100110110x00010000xx00000100000  beqlr 0x4
{                        "beqlrl NUM",{0x4D820821,0x00201800}}, // 0100110110x00010000xx00000100001  beqlrl 0x4
{                        "beqctr NUM",{0x4D820C20,0x00201800}}, // 0100110110x00010000xx10000100000  beqctr 0x4
{                       "beqctrl NUM",{0x4D820C21,0x00201800}}, // 0100110110x00010000xx10000100001  beqctrl 0x4
{                             "bsolr",{0x4D830020,0x00200000}}, // 0100110110x000110000000000100000  bsolr
{                            "bsolrl",{0x4D830021,0x00200000}}, // 0100110110x000110000000000100001  bsolrl
{                            "bsoctr",{0x4D830420,0x00200000}}, // 0100110110x000110000010000100000  bsoctr
{                           "bsoctrl",{0x4D830421,0x00200000}}, // 0100110110x000110000010000100001  bsoctrl
{                         "bsolr NUM",{0x4D830820,0x00201800}}, // 0100110110x00011000xx00000100000  bsolr 0x4
{                        "bsolrl NUM",{0x4D830821,0x00201800}}, // 0100110110x00011000xx00000100001  bsolrl 0x4
{                        "bsoctr NUM",{0x4D830C20,0x00201800}}, // 0100110110x00011000xx10000100000  bsoctr 0x4
{                       "bsoctrl NUM",{0x4D830C21,0x00201800}}, // 0100110110x00011000xx10000100001  bsoctrl 0x4
{                        "bltlr CREG",{0x4D840020,0x003C0000}}, // 0100110110xxxx000000000000100000  bltlr cr1
{                       "bltlrl CREG",{0x4D840021,0x003C0000}}, // 0100110110xxxx000000000000100001  bltlrl cr1
{                       "bltctr CREG",{0x4D840420,0x003C0000}}, // 0100110110xxxx000000010000100000  bltctr cr1
{                      "bltctrl CREG",{0x4D840421,0x003C0000}}, // 0100110110xxxx000000010000100001  bltctrl cr1
{                  "bltlr CREG , NUM",{0x4D840820,0x003C1800}}, // 0100110110xxxx00000xx00000100000  bltlr cr1, 0x4
{                 "bltlrl CREG , NUM",{0x4D840821,0x003C1800}}, // 0100110110xxxx00000xx00000100001  bltlrl cr1, 0x4
{                 "bltctr CREG , NUM",{0x4D840C20,0x003C1800}}, // 0100110110xxxx00000xx10000100000  bltctr cr1, 0x4
{                "bltctrl CREG , NUM",{0x4D840C21,0x003C1800}}, // 0100110110xxxx00000xx10000100001  bltctrl cr1, 0x4
{                        "bgtlr CREG",{0x4D850020,0x003C0000}}, // 0100110110xxxx010000000000100000  bgtlr cr1
{                       "bgtlrl CREG",{0x4D850021,0x003C0000}}, // 0100110110xxxx010000000000100001  bgtlrl cr1
{                       "bgtctr CREG",{0x4D850420,0x003C0000}}, // 0100110110xxxx010000010000100000  bgtctr cr1
{                      "bgtctrl CREG",{0x4D850421,0x003C0000}}, // 0100110110xxxx010000010000100001  bgtctrl cr1
{                  "bgtlr CREG , NUM",{0x4D850820,0x003C1800}}, // 0100110110xxxx01000xx00000100000  bgtlr cr1, 0x4
{                 "bgtlrl CREG , NUM",{0x4D850821,0x003C1800}}, // 0100110110xxxx01000xx00000100001  bgtlrl cr1, 0x4
{                 "bgtctr CREG , NUM",{0x4D850C20,0x003C1800}}, // 0100110110xxxx01000xx10000100000  bgtctr cr1, 0x4
{                "bgtctrl CREG , NUM",{0x4D850C21,0x003C1800}}, // 0100110110xxxx01000xx10000100001  bgtctrl cr1, 0x4
{                        "beqlr CREG",{0x4D860020,0x003C0000}}, // 0100110110xxxx100000000000100000  beqlr cr1
{                       "beqlrl CREG",{0x4D860021,0x003C0000}}, // 0100110110xxxx100000000000100001  beqlrl cr1
{                       "beqctr CREG",{0x4D860420,0x003C0000}}, // 0100110110xxxx100000010000100000  beqctr cr1
{                      "beqctrl CREG",{0x4D860421,0x003C0000}}, // 0100110110xxxx100000010000100001  beqctrl cr1
{                  "beqlr CREG , NUM",{0x4D860820,0x003C1800}}, // 0100110110xxxx10000xx00000100000  beqlr cr1, 0x4
{                 "beqlrl CREG , NUM",{0x4D860821,0x003C1800}}, // 0100110110xxxx10000xx00000100001  beqlrl cr1, 0x4
{                 "beqctr CREG , NUM",{0x4D860C20,0x003C1800}}, // 0100110110xxxx10000xx10000100000  beqctr cr1, 0x4
{                "beqctrl CREG , NUM",{0x4D860C21,0x003C1800}}, // 0100110110xxxx10000xx10000100001  beqctrl cr1, 0x4
{                        "bsolr CREG",{0x4D870020,0x003C0000}}, // 0100110110xxxx110000000000100000  bsolr cr1
{                       "bsolrl CREG",{0x4D870021,0x003C0000}}, // 0100110110xxxx110000000000100001  bsolrl cr1
{                       "bsoctr CREG",{0x4D870420,0x003C0000}}, // 0100110110xxxx110000010000100000  bsoctr cr1
{                      "bsoctrl CREG",{0x4D870421,0x003C0000}}, // 0100110110xxxx110000010000100001  bsoctrl cr1
{                  "bsolr CREG , NUM",{0x4D870820,0x003C1800}}, // 0100110110xxxx11000xx00000100000  bsolr cr1, 0x4
{                 "bsolrl CREG , NUM",{0x4D870821,0x003C1800}}, // 0100110110xxxx11000xx00000100001  bsolrl cr1, 0x4
{                 "bsoctr CREG , NUM",{0x4D870C20,0x003C1800}}, // 0100110110xxxx11000xx10000100000  bsoctr cr1, 0x4
{                "bsoctrl CREG , NUM",{0x4D870C21,0x003C1800}}, // 0100110110xxxx11000xx10000100001  bsoctrl cr1, 0x4
{                           "bltlr -",{0x4DC00020,0x00000000}}, // 01001101110000000000000000100000  bltlr-
{                          "bltlrl -",{0x4DC00021,0x00000000}}, // 01001101110000000000000000100001  bltlrl-
{                          "bltctr -",{0x4DC00420,0x00000000}}, // 01001101110000000000010000100000  bltctr-
{                         "bltctrl -",{0x4DC00421,0x00000000}}, // 01001101110000000000010000100001  bltctrl-
{                       "bltlr - NUM",{0x4DC00820,0x00001800}}, // 0100110111000000000xx00000100000  bltlr- 0x4
{                      "bltlrl - NUM",{0x4DC00821,0x00001800}}, // 0100110111000000000xx00000100001  bltlrl- 0x4
{                      "bltctr - NUM",{0x4DC00C20,0x00001800}}, // 0100110111000000000xx10000100000  bltctr- 0x4
{                     "bltctrl - NUM",{0x4DC00C21,0x00001800}}, // 0100110111000000000xx10000100001  bltctrl- 0x4
{                           "bgtlr -",{0x4DC10020,0x00000000}}, // 01001101110000010000000000100000  bgtlr-
{                          "bgtlrl -",{0x4DC10021,0x00000000}}, // 01001101110000010000000000100001  bgtlrl-
{                          "bgtctr -",{0x4DC10420,0x00000000}}, // 01001101110000010000010000100000  bgtctr-
{                         "bgtctrl -",{0x4DC10421,0x00000000}}, // 01001101110000010000010000100001  bgtctrl-
{                       "bgtlr - NUM",{0x4DC10820,0x00001800}}, // 0100110111000001000xx00000100000  bgtlr- 0x4
{                      "bgtlrl - NUM",{0x4DC10821,0x00001800}}, // 0100110111000001000xx00000100001  bgtlrl- 0x4
{                      "bgtctr - NUM",{0x4DC10C20,0x00001800}}, // 0100110111000001000xx10000100000  bgtctr- 0x4
{                     "bgtctrl - NUM",{0x4DC10C21,0x00001800}}, // 0100110111000001000xx10000100001  bgtctrl- 0x4
{                           "beqlr -",{0x4DC20020,0x00000000}}, // 01001101110000100000000000100000  beqlr-
{                          "beqlrl -",{0x4DC20021,0x00000000}}, // 01001101110000100000000000100001  beqlrl-
{                          "beqctr -",{0x4DC20420,0x00000000}}, // 01001101110000100000010000100000  beqctr-
{                         "beqctrl -",{0x4DC20421,0x00000000}}, // 01001101110000100000010000100001  beqctrl-
{                       "beqlr - NUM",{0x4DC20820,0x00001800}}, // 0100110111000010000xx00000100000  beqlr- 0x4
{                      "beqlrl - NUM",{0x4DC20821,0x00001800}}, // 0100110111000010000xx00000100001  beqlrl- 0x4
{                      "beqctr - NUM",{0x4DC20C20,0x00001800}}, // 0100110111000010000xx10000100000  beqctr- 0x4
{                     "beqctrl - NUM",{0x4DC20C21,0x00001800}}, // 0100110111000010000xx10000100001  beqctrl- 0x4
{                           "bsolr -",{0x4DC30020,0x00000000}}, // 01001101110000110000000000100000  bsolr-
{                          "bsolrl -",{0x4DC30021,0x00000000}}, // 01001101110000110000000000100001  bsolrl-
{                          "bsoctr -",{0x4DC30420,0x00000000}}, // 01001101110000110000010000100000  bsoctr-
{                         "bsoctrl -",{0x4DC30421,0x00000000}}, // 01001101110000110000010000100001  bsoctrl-
{                       "bsolr - NUM",{0x4DC30820,0x00001800}}, // 0100110111000011000xx00000100000  bsolr- 0x4
{                      "bsolrl - NUM",{0x4DC30821,0x00001800}}, // 0100110111000011000xx00000100001  bsolrl- 0x4
{                      "bsoctr - NUM",{0x4DC30C20,0x00001800}}, // 0100110111000011000xx10000100000  bsoctr- 0x4
{                     "bsoctrl - NUM",{0x4DC30C21,0x00001800}}, // 0100110111000011000xx10000100001  bsoctrl- 0x4
{                      "bltlr - CREG",{0x4DC40020,0x001C0000}}, // 01001101110xxx000000000000100000  bltlr- cr1
{                     "bltlrl - CREG",{0x4DC40021,0x001C0000}}, // 01001101110xxx000000000000100001  bltlrl- cr1
{                     "bltctr - CREG",{0x4DC40420,0x001C0000}}, // 01001101110xxx000000010000100000  bltctr- cr1
{                    "bltctrl - CREG",{0x4DC40421,0x001C0000}}, // 01001101110xxx000000010000100001  bltctrl- cr1
{                "bltlr - CREG , NUM",{0x4DC40820,0x001C1800}}, // 01001101110xxx00000xx00000100000  bltlr- cr1, 0x4
{               "bltlrl - CREG , NUM",{0x4DC40821,0x001C1800}}, // 01001101110xxx00000xx00000100001  bltlrl- cr1, 0x4
{               "bltctr - CREG , NUM",{0x4DC40C20,0x001C1800}}, // 01001101110xxx00000xx10000100000  bltctr- cr1, 0x4
{              "bltctrl - CREG , NUM",{0x4DC40C21,0x001C1800}}, // 01001101110xxx00000xx10000100001  bltctrl- cr1, 0x4
{                      "bgtlr - CREG",{0x4DC50020,0x001C0000}}, // 01001101110xxx010000000000100000  bgtlr- cr1
{                     "bgtlrl - CREG",{0x4DC50021,0x001C0000}}, // 01001101110xxx010000000000100001  bgtlrl- cr1
{                     "bgtctr - CREG",{0x4DC50420,0x001C0000}}, // 01001101110xxx010000010000100000  bgtctr- cr1
{                    "bgtctrl - CREG",{0x4DC50421,0x001C0000}}, // 01001101110xxx010000010000100001  bgtctrl- cr1
{                "bgtlr - CREG , NUM",{0x4DC50820,0x001C1800}}, // 01001101110xxx01000xx00000100000  bgtlr- cr1, 0x4
{               "bgtlrl - CREG , NUM",{0x4DC50821,0x001C1800}}, // 01001101110xxx01000xx00000100001  bgtlrl- cr1, 0x4
{               "bgtctr - CREG , NUM",{0x4DC50C20,0x001C1800}}, // 01001101110xxx01000xx10000100000  bgtctr- cr1, 0x4
{              "bgtctrl - CREG , NUM",{0x4DC50C21,0x001C1800}}, // 01001101110xxx01000xx10000100001  bgtctrl- cr1, 0x4
{                      "beqlr - CREG",{0x4DC60020,0x001C0000}}, // 01001101110xxx100000000000100000  beqlr- cr1
{                     "beqlrl - CREG",{0x4DC60021,0x001C0000}}, // 01001101110xxx100000000000100001  beqlrl- cr1
{                     "beqctr - CREG",{0x4DC60420,0x001C0000}}, // 01001101110xxx100000010000100000  beqctr- cr1
{                    "beqctrl - CREG",{0x4DC60421,0x001C0000}}, // 01001101110xxx100000010000100001  beqctrl- cr1
{                "beqlr - CREG , NUM",{0x4DC60820,0x001C1800}}, // 01001101110xxx10000xx00000100000  beqlr- cr1, 0x4
{               "beqlrl - CREG , NUM",{0x4DC60821,0x001C1800}}, // 01001101110xxx10000xx00000100001  beqlrl- cr1, 0x4
{               "beqctr - CREG , NUM",{0x4DC60C20,0x001C1800}}, // 01001101110xxx10000xx10000100000  beqctr- cr1, 0x4
{              "beqctrl - CREG , NUM",{0x4DC60C21,0x001C1800}}, // 01001101110xxx10000xx10000100001  beqctrl- cr1, 0x4
{                      "bsolr - CREG",{0x4DC70020,0x001C0000}}, // 01001101110xxx110000000000100000  bsolr- cr1
{                     "bsolrl - CREG",{0x4DC70021,0x001C0000}}, // 01001101110xxx110000000000100001  bsolrl- cr1
{                     "bsoctr - CREG",{0x4DC70420,0x001C0000}}, // 01001101110xxx110000010000100000  bsoctr- cr1
{                    "bsoctrl - CREG",{0x4DC70421,0x001C0000}}, // 01001101110xxx110000010000100001  bsoctrl- cr1
{                "bsolr - CREG , NUM",{0x4DC70820,0x001C1800}}, // 01001101110xxx11000xx00000100000  bsolr- cr1, 0x4
{               "bsolrl - CREG , NUM",{0x4DC70821,0x001C1800}}, // 01001101110xxx11000xx00000100001  bsolrl- cr1, 0x4
{               "bsoctr - CREG , NUM",{0x4DC70C20,0x001C1800}}, // 01001101110xxx11000xx10000100000  bsoctr- cr1, 0x4
{              "bsoctrl - CREG , NUM",{0x4DC70C21,0x001C1800}}, // 01001101110xxx11000xx10000100001  bsoctrl- cr1, 0x4
{                           "bltlr +",{0x4DE00020,0x00000000}}, // 01001101111000000000000000100000  bltlr+
{                          "bltlrl +",{0x4DE00021,0x00000000}}, // 01001101111000000000000000100001  bltlrl+
{                          "bltctr +",{0x4DE00420,0x00000000}}, // 01001101111000000000010000100000  bltctr+
{                         "bltctrl +",{0x4DE00421,0x00000000}}, // 01001101111000000000010000100001  bltctrl+
{                       "bltlr + NUM",{0x4DE00820,0x00001800}}, // 0100110111100000000xx00000100000  bltlr+ 0x4
{                      "bltlrl + NUM",{0x4DE00821,0x00001800}}, // 0100110111100000000xx00000100001  bltlrl+ 0x4
{                      "bltctr + NUM",{0x4DE00C20,0x00001800}}, // 0100110111100000000xx10000100000  bltctr+ 0x4
{                     "bltctrl + NUM",{0x4DE00C21,0x00001800}}, // 0100110111100000000xx10000100001  bltctrl+ 0x4
{                           "bgtlr +",{0x4DE10020,0x00000000}}, // 01001101111000010000000000100000  bgtlr+
{                          "bgtlrl +",{0x4DE10021,0x00000000}}, // 01001101111000010000000000100001  bgtlrl+
{                          "bgtctr +",{0x4DE10420,0x00000000}}, // 01001101111000010000010000100000  bgtctr+
{                         "bgtctrl +",{0x4DE10421,0x00000000}}, // 01001101111000010000010000100001  bgtctrl+
{                       "bgtlr + NUM",{0x4DE10820,0x00001800}}, // 0100110111100001000xx00000100000  bgtlr+ 0x4
{                      "bgtlrl + NUM",{0x4DE10821,0x00001800}}, // 0100110111100001000xx00000100001  bgtlrl+ 0x4
{                      "bgtctr + NUM",{0x4DE10C20,0x00001800}}, // 0100110111100001000xx10000100000  bgtctr+ 0x4
{                     "bgtctrl + NUM",{0x4DE10C21,0x00001800}}, // 0100110111100001000xx10000100001  bgtctrl+ 0x4
{                           "beqlr +",{0x4DE20020,0x00000000}}, // 01001101111000100000000000100000  beqlr+
{                          "beqlrl +",{0x4DE20021,0x00000000}}, // 01001101111000100000000000100001  beqlrl+
{                          "beqctr +",{0x4DE20420,0x00000000}}, // 01001101111000100000010000100000  beqctr+
{                         "beqctrl +",{0x4DE20421,0x00000000}}, // 01001101111000100000010000100001  beqctrl+
{                       "beqlr + NUM",{0x4DE20820,0x00001800}}, // 0100110111100010000xx00000100000  beqlr+ 0x4
{                      "beqlrl + NUM",{0x4DE20821,0x00001800}}, // 0100110111100010000xx00000100001  beqlrl+ 0x4
{                      "beqctr + NUM",{0x4DE20C20,0x00001800}}, // 0100110111100010000xx10000100000  beqctr+ 0x4
{                     "beqctrl + NUM",{0x4DE20C21,0x00001800}}, // 0100110111100010000xx10000100001  beqctrl+ 0x4
{                           "bsolr +",{0x4DE30020,0x00000000}}, // 01001101111000110000000000100000  bsolr+
{                          "bsolrl +",{0x4DE30021,0x00000000}}, // 01001101111000110000000000100001  bsolrl+
{                          "bsoctr +",{0x4DE30420,0x00000000}}, // 01001101111000110000010000100000  bsoctr+
{                         "bsoctrl +",{0x4DE30421,0x00000000}}, // 01001101111000110000010000100001  bsoctrl+
{                       "bsolr + NUM",{0x4DE30820,0x00001800}}, // 0100110111100011000xx00000100000  bsolr+ 0x4
{                      "bsolrl + NUM",{0x4DE30821,0x00001800}}, // 0100110111100011000xx00000100001  bsolrl+ 0x4
{                      "bsoctr + NUM",{0x4DE30C20,0x00001800}}, // 0100110111100011000xx10000100000  bsoctr+ 0x4
{                     "bsoctrl + NUM",{0x4DE30C21,0x00001800}}, // 0100110111100011000xx10000100001  bsoctrl+ 0x4
{                      "bltlr + CREG",{0x4DE40020,0x001C0000}}, // 01001101111xxx000000000000100000  bltlr+ cr1
{                     "bltlrl + CREG",{0x4DE40021,0x001C0000}}, // 01001101111xxx000000000000100001  bltlrl+ cr1
{                     "bltctr + CREG",{0x4DE40420,0x001C0000}}, // 01001101111xxx000000010000100000  bltctr+ cr1
{                    "bltctrl + CREG",{0x4DE40421,0x001C0000}}, // 01001101111xxx000000010000100001  bltctrl+ cr1
{                "bltlr + CREG , NUM",{0x4DE40820,0x001C1800}}, // 01001101111xxx00000xx00000100000  bltlr+ cr1, 0x4
{               "bltlrl + CREG , NUM",{0x4DE40821,0x001C1800}}, // 01001101111xxx00000xx00000100001  bltlrl+ cr1, 0x4
{               "bltctr + CREG , NUM",{0x4DE40C20,0x001C1800}}, // 01001101111xxx00000xx10000100000  bltctr+ cr1, 0x4
{              "bltctrl + CREG , NUM",{0x4DE40C21,0x001C1800}}, // 01001101111xxx00000xx10000100001  bltctrl+ cr1, 0x4
{                      "bgtlr + CREG",{0x4DE50020,0x001C0000}}, // 01001101111xxx010000000000100000  bgtlr+ cr1
{                     "bgtlrl + CREG",{0x4DE50021,0x001C0000}}, // 01001101111xxx010000000000100001  bgtlrl+ cr1
{                     "bgtctr + CREG",{0x4DE50420,0x001C0000}}, // 01001101111xxx010000010000100000  bgtctr+ cr1
{                    "bgtctrl + CREG",{0x4DE50421,0x001C0000}}, // 01001101111xxx010000010000100001  bgtctrl+ cr1
{                "bgtlr + CREG , NUM",{0x4DE50820,0x001C1800}}, // 01001101111xxx01000xx00000100000  bgtlr+ cr1, 0x4
{               "bgtlrl + CREG , NUM",{0x4DE50821,0x001C1800}}, // 01001101111xxx01000xx00000100001  bgtlrl+ cr1, 0x4
{               "bgtctr + CREG , NUM",{0x4DE50C20,0x001C1800}}, // 01001101111xxx01000xx10000100000  bgtctr+ cr1, 0x4
{              "bgtctrl + CREG , NUM",{0x4DE50C21,0x001C1800}}, // 01001101111xxx01000xx10000100001  bgtctrl+ cr1, 0x4
{                      "beqlr + CREG",{0x4DE60020,0x001C0000}}, // 01001101111xxx100000000000100000  beqlr+ cr1
{                     "beqlrl + CREG",{0x4DE60021,0x001C0000}}, // 01001101111xxx100000000000100001  beqlrl+ cr1
{                     "beqctr + CREG",{0x4DE60420,0x001C0000}}, // 01001101111xxx100000010000100000  beqctr+ cr1
{                    "beqctrl + CREG",{0x4DE60421,0x001C0000}}, // 01001101111xxx100000010000100001  beqctrl+ cr1
{                "beqlr + CREG , NUM",{0x4DE60820,0x001C1800}}, // 01001101111xxx10000xx00000100000  beqlr+ cr1, 0x4
{               "beqlrl + CREG , NUM",{0x4DE60821,0x001C1800}}, // 01001101111xxx10000xx00000100001  beqlrl+ cr1, 0x4
{               "beqctr + CREG , NUM",{0x4DE60C20,0x001C1800}}, // 01001101111xxx10000xx10000100000  beqctr+ cr1, 0x4
{              "beqctrl + CREG , NUM",{0x4DE60C21,0x001C1800}}, // 01001101111xxx10000xx10000100001  beqctrl+ cr1, 0x4
{                      "bsolr + CREG",{0x4DE70020,0x001C0000}}, // 01001101111xxx110000000000100000  bsolr+ cr1
{                     "bsolrl + CREG",{0x4DE70021,0x001C0000}}, // 01001101111xxx110000000000100001  bsolrl+ cr1
{                     "bsoctr + CREG",{0x4DE70420,0x001C0000}}, // 01001101111xxx110000010000100000  bsoctr+ cr1
{                    "bsoctrl + CREG",{0x4DE70421,0x001C0000}}, // 01001101111xxx110000010000100001  bsoctrl+ cr1
{                "bsolr + CREG , NUM",{0x4DE70820,0x001C1800}}, // 01001101111xxx11000xx00000100000  bsolr+ cr1, 0x4
{               "bsolrl + CREG , NUM",{0x4DE70821,0x001C1800}}, // 01001101111xxx11000xx00000100001  bsolrl+ cr1, 0x4
{               "bsoctr + CREG , NUM",{0x4DE70C20,0x001C1800}}, // 01001101111xxx11000xx10000100000  bsoctr+ cr1, 0x4
{              "bsoctrl + CREG , NUM",{0x4DE70C21,0x001C1800}}, // 01001101111xxx11000xx10000100001  bsoctrl+ cr1, 0x4
{                            "bdnzlr",{0x4E000020,0x01BF0000}}, // 0100111xx0xxxxxx0000000000100000  bdnzlr
{                           "bdnzlrl",{0x4E000021,0x01BF0000}}, // 0100111xx0xxxxxx0000000000100001  bdnzlrl
{                           "bdnzctr",{0x4E000420,0x01BF0000}}, // 0100111xx0xxxxxx0000010000100000  bdnzctr
{                          "bdnzctrl",{0x4E000421,0x01BF0000}}, // 0100111xx0xxxxxx0000010000100001  bdnzctrl
{                        "bdnzlr NUM",{0x4E000820,0x01BF1800}}, // 0100111xx0xxxxxx000xx00000100000  bdnzlr 0x4
{                       "bdnzlrl NUM",{0x4E000821,0x01BF1800}}, // 0100111xx0xxxxxx000xx00000100001  bdnzlrl 0x4
{                       "bdnzctr NUM",{0x4E000C20,0x01BF1800}}, // 0100111xx0xxxxxx000xx10000100000  bdnzctr 0x4
{                      "bdnzctrl NUM",{0x4E000C21,0x01BF1800}}, // 0100111xx0xxxxxx000xx10000100001  bdnzctrl 0x4
{                             "bdzlr",{0x4E400020,0x01BF0000}}, // 0100111xx1xxxxxx0000000000100000  bdzlr
{                            "bdzlrl",{0x4E400021,0x01BF0000}}, // 0100111xx1xxxxxx0000000000100001  bdzlrl
{                            "bdzctr",{0x4E400420,0x01BF0000}}, // 0100111xx1xxxxxx0000010000100000  bdzctr
{                           "bdzctrl",{0x4E400421,0x01BF0000}}, // 0100111xx1xxxxxx0000010000100001  bdzctrl
{                         "bdzlr NUM",{0x4E400820,0x01BF1800}}, // 0100111xx1xxxxxx000xx00000100000  bdzlr 0x4
{                        "bdzlrl NUM",{0x4E400821,0x01BF1800}}, // 0100111xx1xxxxxx000xx00000100001  bdzlrl 0x4
{                        "bdzctr NUM",{0x4E400C20,0x01BF1800}}, // 0100111xx1xxxxxx000xx10000100000  bdzctr 0x4
{                       "bdzctrl NUM",{0x4E400C21,0x01BF1800}}, // 0100111xx1xxxxxx000xx10000100001  bdzctrl 0x4
{                               "blr",{0x4E800020,0x00000000}}, // 01001110100000000000000000100000  blr
{                              "blrl",{0x4E800021,0x00000000}}, // 01001110100000000000000000100001  blrl
{                              "bctr",{0x4E800420,0x00000000}}, // 01001110100000000000010000100000  bctr
{                             "bctrl",{0x4E800421,0x00000000}}, // 01001110100000000000010000100001  bctrl
{                          "bdnzlr -",{0x4F000020,0x001F0000}}, // 01001111000xxxxx0000000000100000  bdnzlr-
{                         "bdnzlrl -",{0x4F000021,0x001F0000}}, // 01001111000xxxxx0000000000100001  bdnzlrl-
{                         "bdnzctr -",{0x4F000420,0x001F0000}}, // 01001111000xxxxx0000010000100000  bdnzctr-
{                        "bdnzctrl -",{0x4F000421,0x001F0000}}, // 01001111000xxxxx0000010000100001  bdnzctrl-
{                      "bdnzlr - NUM",{0x4F000820,0x001F1800}}, // 01001111000xxxxx000xx00000100000  bdnzlr- 0x4
{                     "bdnzlrl - NUM",{0x4F000821,0x001F1800}}, // 01001111000xxxxx000xx00000100001  bdnzlrl- 0x4
{                     "bdnzctr - NUM",{0x4F000C20,0x001F1800}}, // 01001111000xxxxx000xx10000100000  bdnzctr- 0x4
{                    "bdnzctrl - NUM",{0x4F000C21,0x001F1800}}, // 01001111000xxxxx000xx10000100001  bdnzctrl- 0x4
{                          "bdnzlr +",{0x4F200020,0x001F0000}}, // 01001111001xxxxx0000000000100000  bdnzlr+
{                         "bdnzlrl +",{0x4F200021,0x001F0000}}, // 01001111001xxxxx0000000000100001  bdnzlrl+
{                         "bdnzctr +",{0x4F200420,0x001F0000}}, // 01001111001xxxxx0000010000100000  bdnzctr+
{                        "bdnzctrl +",{0x4F200421,0x001F0000}}, // 01001111001xxxxx0000010000100001  bdnzctrl+
{                      "bdnzlr + NUM",{0x4F200820,0x001F1800}}, // 01001111001xxxxx000xx00000100000  bdnzlr+ 0x4
{                     "bdnzlrl + NUM",{0x4F200821,0x001F1800}}, // 01001111001xxxxx000xx00000100001  bdnzlrl+ 0x4
{                     "bdnzctr + NUM",{0x4F200C20,0x001F1800}}, // 01001111001xxxxx000xx10000100000  bdnzctr+ 0x4
{                    "bdnzctrl + NUM",{0x4F200C21,0x001F1800}}, // 01001111001xxxxx000xx10000100001  bdnzctrl+ 0x4
{                           "bdzlr -",{0x4F400020,0x001F0000}}, // 01001111010xxxxx0000000000100000  bdzlr-
{                          "bdzlrl -",{0x4F400021,0x001F0000}}, // 01001111010xxxxx0000000000100001  bdzlrl-
{                          "bdzctr -",{0x4F400420,0x001F0000}}, // 01001111010xxxxx0000010000100000  bdzctr-
{                         "bdzctrl -",{0x4F400421,0x001F0000}}, // 01001111010xxxxx0000010000100001  bdzctrl-
{                       "bdzlr - NUM",{0x4F400820,0x001F1800}}, // 01001111010xxxxx000xx00000100000  bdzlr- 0x4
{                      "bdzlrl - NUM",{0x4F400821,0x001F1800}}, // 01001111010xxxxx000xx00000100001  bdzlrl- 0x4
{                      "bdzctr - NUM",{0x4F400C20,0x001F1800}}, // 01001111010xxxxx000xx10000100000  bdzctr- 0x4
{                     "bdzctrl - NUM",{0x4F400C21,0x001F1800}}, // 01001111010xxxxx000xx10000100001  bdzctrl- 0x4
{                           "bdzlr +",{0x4F600020,0x001F0000}}, // 01001111011xxxxx0000000000100000  bdzlr+
{                          "bdzlrl +",{0x4F600021,0x001F0000}}, // 01001111011xxxxx0000000000100001  bdzlrl+
{                          "bdzctr +",{0x4F600420,0x001F0000}}, // 01001111011xxxxx0000010000100000  bdzctr+
{                         "bdzctrl +",{0x4F600421,0x001F0000}}, // 01001111011xxxxx0000010000100001  bdzctrl+
{                       "bdzlr + NUM",{0x4F600820,0x001F1800}}, // 01001111011xxxxx000xx00000100000  bdzlr+ 0x4
{                      "bdzlrl + NUM",{0x4F600821,0x001F1800}}, // 01001111011xxxxx000xx00000100001  bdzlrl+ 0x4
{                      "bdzctr + NUM",{0x4F600C20,0x001F1800}}, // 01001111011xxxxx000xx10000100000  bdzctr+ 0x4
{                     "bdzctrl + NUM",{0x4F600C21,0x001F1800}}, // 01001111011xxxxx000xx10000100001  bdzctrl+ 0x4
{"rlwimi GPR , GPR , NUM , NUM , NUM",{0x50000000,0x03FFFFFE}}, // 010100xxxxxxxxxxxxxxxxxxxxxxxxx0  rlwimi r0, r0, 0, 0, 0
{"rlwimi . GPR , GPR , NUM , NUM , NUM",{0x50000001,0x03FFFFFE}}, // 010100xxxxxxxxxxxxxxxxxxxxxxxxx1  rlwimi. r0, r0, 0, 0, 0
{"rlwinm GPR , GPR , NUM , NUM , NUM",{0x54000000,0x03FFFFFE}}, // 010101xxxxxxxxxxxxxxxxxxxxxxxxx0  rlwinm r0, r0, 0, 0, 0
{"rlwinm . GPR , GPR , NUM , NUM , NUM",{0x54000001,0x03FFFFFE}}, // 010101xxxxxxxxxxxxxxxxxxxxxxxxx1  rlwinm. r0, r0, 0, 0, 0
{              "slwi GPR , GPR , NUM",{0x5400003E,0x03FFF83E}}, // 010101xxxxxxxxxxxxxxx00000xxxxx0  slwi r0, r0, 0
{            "clrrwi GPR , GPR , NUM",{0x54000000,0x03FF003E}}, // 010101xxxxxxxxxx0000000000xxxxx0  clrrwi r0, r0, 1
{          "clrrwi . GPR , GPR , NUM",{0x54000001,0x03FF003F}}, // 010101xxxxxxxxxx0000000000xxxxx0  clrrwi. r0, r0, 1
{            "clrlwi GPR , GPR , NUM",{0x5400007E,0x03FF07C0}}, // 010101xxxxxxxxxx00000xxxxx111110  clrlwi r0, r0, 1
{          "clrlwi . GPR , GPR , NUM",{0x5400007F,0x03FF07C0}}, // 010101xxxxxxxxxx00000xxxxx111111  clrlwi. r0, r0, 1
{            "rotlwi GPR , GPR , NUM",{0x5400083E,0x03FFF800}}, // 010101xxxxxxxxxxxxxxx00000111110  rotlwi r0, r0, 1
{            "rotlwi . GPR , GPR , NUM",{0x5400083F,0x03FFF800}}, // 010101xxxxxxxxxxxxxxx00000111111  rotlwi. r0, r0, 1
{            "rotrwi GPR , GPR , NUM",{0x5400083E,0x03FFF800}}, // 010101xxxxxxxxxxxxxxx00000111110  rotrwi r0, r0, 1
{          "rotrwi . GPR , GPR , NUM",{0x5400003F,0x03FFF800}}, // 010101xxxxxxxxxxxxxxx00000111111  rotrwi. r0, r0, 0
{              "srwi GPR , GPR , NUM",{0x54000FFE,0x03FFFFC0}}, // 010101xxxxxxxxxxxxxxxxxxxx111110  srwi r0, r0, 0x1f
{ "rlwnm GPR , GPR , GPR , NUM , NUM",{0x5C000000,0x03FFFFFE}}, // 010111xxxxxxxxxxxxxxxxxxxxxxxxx0  rlwnm r0, r0, r0, 0, 0
{"rlwnm . GPR , GPR , GPR , NUM , NUM",{0x5C000001,0x03FFFFFE}}, // 010111xxxxxxxxxxxxxxxxxxxxxxxxx1  rlwnm. r0, r0, r0, 0, 0
{             "rotlw GPR , GPR , GPR",{0x5C00003E,0x03FFF800}}, // 010111xxxxxxxxxxxxxxx00000111110  rotlw r0, r0, r0
{           "rotlw . GPR , GPR , GPR",{0x5C00003F,0x03FFF800}}, // 010111xxxxxxxxxxxxxxx00000111111  rotlw. r0, r0, r0
{                               "nop",{0x60000000,0x00000000}}, // 01100000000000000000000000000000  nop
{               "ori GPR , GPR , NUM",{0x60000001,0x03FFFFFF}}, // 011000xxxxxxxxxxxxxxxxxxxxxxxxxx  ori r0, r0, 1
{              "oris GPR , GPR , NUM",{0x64000000,0x03FFFFFF}}, // 011001xxxxxxxxxxxxxxxxxxxxxxxxxx  oris r0, r0, 0
{                              "xnop",{0x68000000,0x00000000}}, // 01101000000000000000000000000000  xnop
{              "xori GPR , GPR , NUM",{0x68000001,0x03FFFFFF}}, // 011010xxxxxxxxxxxxxxxxxxxxxxxxxx  xori r0, r0, 1
{             "xoris GPR , GPR , NUM",{0x6C000000,0x03FFFFFF}}, // 011011xxxxxxxxxxxxxxxxxxxxxxxxxx  xoris r0, r0, 0
{            "andi . GPR , GPR , NUM",{0x70000000,0x03FFFFFF}}, // 011100xxxxxxxxxxxxxxxxxxxxxxxxxx  andi. r0, r0, 0
{           "andis . GPR , GPR , NUM",{0x74000000,0x03FFFFFF}}, // 011101xxxxxxxxxxxxxxxxxxxxxxxxxx  andis. r0, r0, 0
{            "rotldi GPR , GPR , NUM",{0x78000000,0x03FFF802}}, // 011110xxxxxxxxxxxxxxx000000000x0  rotldi r0, r0, 0
{          "rotldi . GPR , GPR , NUM",{0x78000001,0x03FFF802}}, // 011110xxxxxxxxxxxxxxx000000000x1  rotldi. r0, r0, 0
{            "rotrdi GPR , GPR , NUM",{0x78000000,0x03FFF802}}, // 011110xxxxxxxxxxxxxxx000000000x0  rotrdi r0, r0, 0
{          "rotrdi . GPR , GPR , NUM",{0x78000001,0x03FFF802}}, // 011110xxxxxxxxxxxxxxx000000000x1  rotrdi. r0, r0, 0

{    "extrdi . GPR , GPR , NUM , NUM",{0x78000023,0x03FFFFE2}}, // 011110xxxxxxxxxxxxxxxxxxxxx000x1  rldicl. r0, r0, 0x20, 0x20

//                  clrrdi  r1, r1, 0x5                  782106a4                      // 011110'00001'00001'00000'110101'00100
//                                                                                     // 000000'11111'11111'00000'111111'00000
{            "clrrdi GPR , GPR , NUM",{0x78000004,0x03FF07E0}}, // 011110'xxxxx'xxxxx'00000'xxxxxx'00100  clrrdi r0, r0, 0x20
{          "clrrdi . GPR , GPR , NUM",{0x78000005,0x03FF07E0}}, // 011110xxxxxxxxxx00000xxxxxx00101  clrrdi. r0, r0, 0x20
{      "extldi GPR , GPR , NUM , NUM",{0x78000004,0x03FFFFE2}}, // 011110xxxxxxxxxxxxxxxxxxxxx001x0  extldi r0, r0, 1, 0
{    "extldi . GPR , GPR , NUM , NUM",{0x78000005,0x03FFFFE2}}, // 011110xxxxxxxxxxxxxxxxxxxxx001x1  extldi. r0, r0, 1, 0
{      "rldicr GPR , GPR , NUM , NUM",{0x78000004,0x03FFFFE2}}, // 011110xxxxxxxxxxxxxxxxxxxxx001x0  rldicr r0, r0, 0, 0
{    "rldicr . GPR , GPR , NUM , NUM",{0x78000005,0x03FFFFE2}}, // 011110xxxxxxxxxxxxxxxxxxxxx001x1  rldicr. r0, r0, 0, 0

{       "rldic GPR , GPR , NUM , NUM",{0x78000008,0x03FFFFE2}}, // 011110xxxxxxxxxxxxxxxxxxxxx010x0  rldic r0, r0, 0, 0
{     "rldic . GPR , GPR , NUM , NUM",{0x78000009,0x03FFFFE2}}, // 011110xxxxxxxxxxxxxxxxxxxxx010x1  rldic. r0, r0, 0, 0
{      "rldimi GPR , GPR , NUM , NUM",{0x7800000C,0x03FFFFE2}}, // 011110xxxxxxxxxxxxxxxxxxxxx011x0  rldimi r0, r0, 0, 0
{    "rldimi . GPR , GPR , NUM , NUM",{0x7800000D,0x03FFFFE2}}, // 011110xxxxxxxxxxxxxxxxxxxxx011x1  rldimi. r0, r0, 0, 0
{             "rotld GPR , GPR , GPR",{0x78000010,0x03FFF800}}, // 011110xxxxxxxxxxxxxxx00000010000  rotld r0, r0, r0
{           "rotld . GPR , GPR , GPR",{0x78000011,0x03FFF800}}, // 011110xxxxxxxxxxxxxxx00000010001  rotld. r0, r0, r0
{       "rldcr GPR , GPR , GPR , NUM",{0x78000012,0x03FFFFE0}}, // 011110xxxxxxxxxxxxxxxxxxxxx10010  rldcr r0, r0, r0, 0
{     "rldcr . GPR , GPR , GPR , NUM",{0x78000013,0x03FFFFE0}}, // 011110xxxxxxxxxxxxxxxxxxxxx10011  rldcr. r0, r0, r0, 0

{            "clrldi GPR , GPR , NUM",{0x78000020,0x03FF07E0}}, // 011110xxxxxxxxxx00000xxxxxx00000  clrldi r0, r0, 0x20
{          "clrldi . GPR , GPR , NUM",{0x78000021,0x03FF07E0}}, // 011110xxxxxxxxxx00000xxxxxx00001  clrldi. r0, r0, 0x20
{      "extrdi GPR , GPR , NUM , NUM",{0x78000022,0x03FFFFE2}}, // 011110xxxxxxxxxxxxxxxxxxxxx000x0  extrdi r0, r0, 1, 0x20
{    "extrdi . GPR , GPR , NUM , NUM",{0x78000023,0x03FFFFE2}}, // 011110xxxxxxxxxxxxxxxxxxxxx000x1  extrdi. r0, r0, 1, 0x20
{      "rldicl GPR , GPR , NUM , NUM",{0x78000022,0x03FFFFE2}}, // 011110xxxxxxxxxxxxxxxxxxxxx000x0  rldicl r0, r0, 0x20, 0x20
{    "rldicl . GPR , GPR , NUM , NUM",{0x78000023,0x03FFFFE2}}, // 011110xxxxxxxxxxxxxxxxxxxxx000x1  rldicl. r0, r0, 0x20, 0x20

{       "rldcl GPR , GPR , GPR , NUM",{0x78000030,0x03FFFFE0}}, // 011110xxxxxxxxxxxxxxxxxxxxx10000  rldcl r0, r0, r0, 0x20
{     "rldcl . GPR , GPR , GPR , NUM",{0x78000031,0x03FFFFE0}}, // 011110xxxxxxxxxxxxxxxxxxxxx10001  rldcl. r0, r0, r0, 0x20
{              "sldi GPR , GPR , NUM",{0x780007C6,0x03FFFFE2}}, // 011110xxxxxxxxxxxxxxxxxxxxx001x0  sldi r0, r0, 0x20
{              "srdi GPR , GPR , NUM",{0x780007C4,0x03FFFFE2}}, // 011110xxxxxxxxxxxxxxxxxxxxx000x0  srdi r0, r0, 0x20
{              "sldi . GPR , GPR , NUM",{0x780007C7,0x03FFFFE2}}, // 011110xxxxxxxxxxxxxxxxxxxxx001x0  sldi. r0, r0, 0x20
{              "srdi . GPR , GPR , NUM",{0x780007C5,0x03FFFFE2}}, // 011110xxxxxxxxxxxxxxxxxxxxx000x0  srdi. r0, r0, 0x20
{                    "cmpw GPR , GPR",{0x7C000000,0x001FF800}}, // 01111100000xxxxxxxxxx00000000000  cmpw r0, r0
{                "tw NUM , GPR , GPR",{0x7C000008,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx00000001000  tw 0, r0, r0
{             "lvsl VREG , NUM , GPR",{0x7C00000C,0x03E0F800}}, // 011111xxxxx00000xxxxx00000001100  lvsl v0, 0, r0
{            "lvebx VREG , NUM , GPR",{0x7C00000E,0x03E0F800}}, // 011111xxxxx00000xxxxx00000001110  lvebx v0, 0, r0
{             "subfc GPR , GPR , GPR",{0x7C000010,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx00000010000  subfc r0, r0, r0
{           "subfc . GPR , GPR , GPR",{0x7C000011,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx00000010001  subfc. r0, r0, r0
{            "mulhdu GPR , GPR , GPR",{0x7C000012,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx00000010010  mulhdu r0, r0, r0
{          "mulhdu . GPR , GPR , GPR",{0x7C000013,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx00000010011  mulhdu. r0, r0, r0
{              "addc GPR , GPR , GPR",{0x7C000014,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx00000010100  addc r0, r0, r0
{            "addc . GPR , GPR , GPR",{0x7C000015,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx00000010101  addc. r0, r0, r0
{            "mulhwu GPR , GPR , GPR",{0x7C000016,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx00000010110  mulhwu r0, r0, r0
{          "mulhwu . GPR , GPR , GPR",{0x7C000017,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx00000010111  mulhwu. r0, r0, r0
{        "isel GPR , NUM , GPR , CREG FLAG",{0x7C00001E,0x03E0FFC0}}, // 011111xxxxx00000xxxxxxxxxx011110  isel r0, 0, r0, 0
{                          "mfcr GPR",{0x7C000026,0x03E00000}}, // 011111xxxxx000000000000000100110  mfcr r0
{             "lwarx GPR , NUM , GPR",{0x7C000028,0x03E0F800}}, // 011111xxxxx00000xxxxx00000101000  lwarx r0, 0, r0
{               "ldx GPR , NUM , GPR",{0x7C00002A,0x03E0F800}}, // 011111xxxxx00000xxxxx00000101010  ldx r0, 0, r0
{              "lwzx GPR , NUM , GPR",{0x7C00002E,0x03E0F800}}, // 011111xxxxx00000xxxxx00000101110  lwzx r0, 0, r0
{               "slw GPR , GPR , GPR",{0x7C000030,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx00000110000  slw r0, r0, r0
{             "slw . GPR , GPR , GPR",{0x7C000031,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx00000110001  slw. r0, r0, r0
{                  "cntlzw GPR , GPR",{0x7C000034,0x03FF0000}}, // 011111xxxxxxxxxx0000000000110100  cntlzw r0, r0
{                "cntlzw . GPR , GPR",{0x7C000035,0x03FF0000}}, // 011111xxxxxxxxxx0000000000110101  cntlzw. r0, r0
{               "sld GPR , GPR , GPR",{0x7C000036,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx00000110110  sld r0, r0, r0
{             "sld . GPR , GPR , GPR",{0x7C000037,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx00000110111  sld. r0, r0, r0
{               "and GPR , GPR , GPR",{0x7C000038,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx00000111000  and r0, r0, r0
{             "and . GPR , GPR , GPR",{0x7C000039,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx00000111001  and. r0, r0, r0
{                   "cmplw GPR , GPR",{0x7C000040,0x001FF800}}, // 01111100000xxxxxxxxxx00001000000  cmplw r0, r0
{             "lvsr VREG , NUM , GPR",{0x7C00004C,0x03E0F800}}, // 011111xxxxx00000xxxxx00001001100  lvsr v0, 0, r0
{            "lvehx VREG , NUM , GPR",{0x7C00004E,0x03E0F800}}, // 011111xxxxx00000xxxxx00001001110  lvehx v0, 0, r0
{              "subf GPR , GPR , GPR",{0x7C000050,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx00001010000  subf r0, r0, r0
{            "subf . GPR , GPR , GPR",{0x7C000051,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx00001010001  subf. r0, r0, r0
{              "ldux GPR , NUM , GPR",{0x7C00006A,0x03E0F800}}, // 011111xxxxx00000xxxxx00001101010  ldux r0, 0, r0
{                   "dcbst NUM , GPR",{0x7C00006C,0x0000F800}}, // 0111110000000000xxxxx00001101100  dcbst 0, r0
{             "lwzux GPR , NUM , GPR",{0x7C00006E,0x03E0F800}}, // 011111xxxxx00000xxxxx00001101110  lwzux r0, 0, r0
{                  "cntlzd GPR , GPR",{0x7C000074,0x03FF0000}}, // 011111xxxxxxxxxx0000000001110100  cntlzd r0, r0
{                "cntlzd . GPR , GPR",{0x7C000075,0x03FF0000}}, // 011111xxxxxxxxxx0000000001110101  cntlzd. r0, r0
{              "andc GPR , GPR , GPR",{0x7C000078,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx00001111000  andc r0, r0, r0
{            "andc . GPR , GPR , GPR",{0x7C000079,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx00001111001  andc. r0, r0, r0
{                              "wait",{0x7C00007C,0x00000000}}, // 01111100000000000000000001111100  wait
{                "td NUM , GPR , GPR",{0x7C000088,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx00010001000  td 0, r0, r0
{            "lvewx VREG , NUM , GPR",{0x7C00008E,0x03E0F800}}, // 011111xxxxx00000xxxxx00010001110  lvewx v0, 0, r0
{             "mulhd GPR , GPR , GPR",{0x7C000092,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx00010010010  mulhd r0, r0, r0
{           "mulhd . GPR , GPR , GPR",{0x7C000093,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx00010010011  mulhd. r0, r0, r0
{             "mulhw GPR , GPR , GPR",{0x7C000096,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx00010010110  mulhw r0, r0, r0
{           "mulhw . GPR , GPR , GPR",{0x7C000097,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx00010010111  mulhw. r0, r0, r0
{                         "mfmsr GPR",{0x7C0000A6,0x03E00000}}, // 011111xxxxx000000000000010100110  mfmsr r0
{             "ldarx GPR , NUM , GPR",{0x7C0000A8,0x03E0F800}}, // 011111xxxxx00000xxxxx00010101000  ldarx r0, 0, r0
{                    "dcbf NUM , GPR",{0x7C0000AC,0x0000F800}}, // 0111110000000000xxxxx00010101100  dcbf 0, r0
{              "lbzx GPR , NUM , GPR",{0x7C0000AE,0x03E0F800}}, // 011111xxxxx00000xxxxx00010101110  lbzx r0, 0, r0
{              "lvx VREG , NUM , GPR",{0x7C0000CE,0x03E0F800}}, // 011111xxxxx00000xxxxx00011001110  lvx v0, 0, r0
{                     "neg GPR , GPR",{0x7C0000D0,0x03FF0000}}, // 011111xxxxxxxxxx0000000011010000  neg r0, r0
{                   "neg . GPR , GPR",{0x7C0000D1,0x03FF0000}}, // 011111xxxxxxxxxx0000000011010001  neg. r0, r0
{             "lbzux GPR , NUM , GPR",{0x7C0000EE,0x03E0F800}}, // 011111xxxxx00000xxxxx00011101110  lbzux r0, 0, r0
{               "nor GPR , GPR , GPR",{0x7C0000F8,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx00011111000  nor r0, r0, r0
{             "nor . GPR , GPR , GPR",{0x7C0000F9,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx00011111001  nor. r0, r0, r0
{                         "wrtee GPR",{0x7C000106,0x03FEF801}}, // 011111xxxxxxxxx0xxxxx0010000011x  wrtee r0
{           "stvebx VREG , NUM , GPR",{0x7C00010E,0x03E0F800}}, // 011111xxxxx00000xxxxx00100001110  stvebx v0, 0, r0
{             "subfe GPR , GPR , GPR",{0x7C000110,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx00100010000  subfe r0, r0, r0
{           "subfe . GPR , GPR , GPR",{0x7C000111,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx00100010001  subfe. r0, r0, r0
{              "adde GPR , GPR , GPR",{0x7C000114,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx00100010100  adde r0, r0, r0
{            "adde . GPR , GPR , GPR",{0x7C000115,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx00100010101  adde. r0, r0, r0
{                   "mtcrf NUM , GPR",{0x7C000120,0x03EFF000}}, // 011111xxxxx0xxxxxxxx000100100000  mtcrf 0, r0
{                         "mtmsr GPR",{0x7C000124,0x03FEF801}}, // 011111xxxxxxxxx0xxxxx0010010010x  mtmsr r0
{              "stdx GPR , NUM , GPR",{0x7C00012A,0x03E0F800}}, // 011111xxxxx00000xxxxx00100101010  stdx r0, 0, r0
{           "stwcx . GPR , NUM , GPR",{0x7C00012D,0x03E0F800}}, // 011111xxxxx00000xxxxx00100101101  stwcx. r0, 0, r0
{              "stwx GPR , NUM , GPR",{0x7C00012E,0x03E0F800}}, // 011111xxxxx00000xxxxx00100101110  stwx r0, 0, r0
{                        "wrteei NUM",{0x7C000146,0x03FFF801}}, // 011111xxxxxxxxxxxxxxx0010100011x  wrteei 0
{           "stvehx VREG , NUM , GPR",{0x7C00014E,0x03E0F800}}, // 011111xxxxx00000xxxxx00101001110  stvehx v0, 0, r0
{                        "mtmsrd GPR",{0x7C000164,0x03FEF801}}, // 011111xxxxxxxxx0xxxxx0010110010x  mtmsrd r0
{             "stdux GPR , NUM , GPR",{0x7C00016A,0x03E0F800}}, // 011111xxxxx00000xxxxx00101101010  stdux r0, 0, r0
{             "stwux GPR , NUM , GPR",{0x7C00016E,0x03E0F800}}, // 011111xxxxx00000xxxxx00101101110  stwux r0, 0, r0
{           "stvewx VREG , NUM , GPR",{0x7C00018E,0x03E0F800}}, // 011111xxxxx00000xxxxx00110001110  stvewx v0, 0, r0
{                  "subfze GPR , GPR",{0x7C000190,0x03FF0000}}, // 011111xxxxxxxxxx0000000110010000  subfze r0, r0
{                "subfze . GPR , GPR",{0x7C000191,0x03FF0000}}, // 011111xxxxxxxxxx0000000110010001  subfze. r0, r0
{                   "addze GPR , GPR",{0x7C000194,0x03FF0000}}, // 011111xxxxxxxxxx0000000110010100  addze r0, r0
{                 "addze . GPR , GPR",{0x7C000195,0x03FF0000}}, // 011111xxxxxxxxxx0000000110010101  addze. r0, r0
{                    "mtsr NUM , GPR",{0x7C0001A4,0x03FFF801}}, // 011111xxxxxxxxxxxxxxx0011010010x  mtsr 0, r0
{           "stdcx . GPR , NUM , GPR",{0x7C0001AD,0x03E0F800}}, // 011111xxxxx00000xxxxx00110101101  stdcx. r0, 0, r0
{              "stbx GPR , NUM , GPR",{0x7C0001AE,0x03E0F800}}, // 011111xxxxx00000xxxxx00110101110  stbx r0, 0, r0
{             "stvx VREG , NUM , GPR",{0x7C0001CE,0x03E0F800}}, // 011111xxxxx00000xxxxx00111001110  stvx v0, 0, r0
{                  "subfme GPR , GPR",{0x7C0001D0,0x03FF0000}}, // 011111xxxxxxxxxx0000000111010000  subfme r0, r0
{                "subfme . GPR , GPR",{0x7C0001D1,0x03FF0000}}, // 011111xxxxxxxxxx0000000111010001  subfme. r0, r0
{             "mulld GPR , GPR , GPR",{0x7C0001D2,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx00111010010  mulld r0, r0, r0
{           "mulld . GPR , GPR , GPR",{0x7C0001D3,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx00111010011  mulld. r0, r0, r0
{                   "addme GPR , GPR",{0x7C0001D4,0x03FF0000}}, // 011111xxxxxxxxxx0000000111010100  addme r0, r0
{                 "addme . GPR , GPR",{0x7C0001D5,0x03FF0000}}, // 011111xxxxxxxxxx0000000111010101  addme. r0, r0
{             "mullw GPR , GPR , GPR",{0x7C0001D6,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx00111010110  mullw r0, r0, r0
{           "mullw . GPR , GPR , GPR",{0x7C0001D7,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx00111010111  mullw. r0, r0, r0
{                  "mtsrin GPR , GPR",{0x7C0001E4,0x03FFF801}}, // 011111xxxxxxxxxxxxxxx0011110010x  mtsrin r0, r0
{                  "dcbtst NUM , GPR",{0x7C0001EC,0x0000F800}}, // 0111110000000000xxxxx00111101100  dcbtst 0, r0
{             "stbux GPR , NUM , GPR",{0x7C0001EE,0x03E0F800}}, // 011111xxxxx00000xxxxx00111101110  stbux r0, 0, r0
{               "add GPR , GPR , GPR",{0x7C000214,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx01000010100  add r0, r0, r0
{             "add . GPR , GPR , GPR",{0x7C000215,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx01000010101  add. r0, r0, r0
{                        "tlbiel GPR",{0x7C000224,0x0000F800}}, // 0111110000000000xxxxx01000100100  tlbiel r0
{                    "dcbt NUM , GPR",{0x7C00022C,0x0000F800}}, // 0111110000000000xxxxx01000101100  dcbt 0, r0
{              "lhzx GPR , NUM , GPR",{0x7C00022E,0x03E0F800}}, // 011111xxxxx00000xxxxx01000101110  lhzx r0, 0, r0
{               "eqv GPR , GPR , GPR",{0x7C000238,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx01000111000  eqv r0, r0, r0
{             "eqv . GPR , GPR , GPR",{0x7C000239,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx01000111001  eqv. r0, r0, r0
{                         "tlbie GPR",{0x7C000264,0x0000F800}}, // 0111110000000000xxxxx01001100100  tlbie r0
{             "lhzux GPR , NUM , GPR",{0x7C00026E,0x03E0F800}}, // 011111xxxxx00000xxxxx01001101110  lhzux r0, 0, r0
{               "xor GPR , GPR , GPR",{0x7C000278,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx01001111000  xor r0, r0, r0
{             "xor . GPR , GPR , GPR",{0x7C000279,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx01001111001  xor. r0, r0, r0
{                   "mfdcr GPR , NUM",{0x7C000286,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx01010000110  mfdcr r0, 0
{          "lxvdsx VSREG , NUM , GPR",{0x7C000298,0x03E0F800}}, // 011111xxxxx00000xxxxx01010011000  lxvdsx vs0, 0, r0
{                   "mfspr GPR , NUM",{0x7C0002A6,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx01010100110  mfspr r0, 0
{              "lwax GPR , NUM , GPR",{0x7C0002AA,0x03E0F800}}, // 011111xxxxx00000xxxxx01010101010  lwax r0, 0, r0
{               "dst GPR , GPR , NUM",{0x7C0002AC,0x007FF800}}, // 011111000xxxxxxxxxxxx01010101100  dst r0, r0, 0
{              "lhax GPR , NUM , GPR",{0x7C0002AE,0x03E0F800}}, // 011111xxxxx00000xxxxx01010101110  lhax r0, 0, r0
{             "lvxl VREG , NUM , GPR",{0x7C0002CE,0x03E0F800}}, // 011111xxxxx00000xxxxx01011001110  lvxl v0, 0, r0
{                             "tlbia",{0x7C0002E4,0x00000000}}, // 01111100000000000000001011100100  tlbia
{                    "mftb GPR , NUM",{0x7C0002E6,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx01011100110  mftb r0, 0
{             "lwaux GPR , NUM , GPR",{0x7C0002EA,0x03E0F800}}, // 011111xxxxx00000xxxxx01011101010  lwaux r0, 0, r0
{             "dstst GPR , GPR , NUM",{0x7C0002EC,0x007FF800}}, // 011111000xxxxxxxxxxxx01011101100  dstst r0, r0, 0
{             "lhaux GPR , NUM , GPR",{0x7C0002EE,0x03E0F800}}, // 011111xxxxx00000xxxxx01011101110  lhaux r0, 0, r0
{                 "popcntw GPR , GPR",{0x7C0002F4,0x03FF0000}}, // 011111xxxxxxxxxx0000001011110100  popcntw r0, r0
{                  "slbmte GPR , GPR",{0x7C000324,0x03E0F800}}, // 011111xxxxx00000xxxxx01100100100  slbmte r0, r0
{              "sthx GPR , NUM , GPR",{0x7C00032E,0x03E0F800}}, // 011111xxxxx00000xxxxx01100101110  sthx r0, 0, r0
{               "orc GPR , GPR , GPR",{0x7C000338,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx01100111000  orc r0, r0, r0
{             "orc . GPR , GPR , GPR",{0x7C000339,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx01100111001  orc. r0, r0, r0
{                         "slbie GPR",{0x7C000364,0x0000F800}}, // 0111110000000000xxxxx01101100100  slbie r0
{             "sthux GPR , NUM , GPR",{0x7C00036E,0x03E0F800}}, // 011111xxxxx00000xxxxx01101101110  sthux r0, 0, r0
{                      "mr GPR , GPR",{0x7C000378,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx01101111000  mr r0, r0
{              "or . GPR , GPR , GPR",{0x7C000379,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx01101111001  or. r0, r0, r0
{                   "mtdcr NUM , GPR",{0x7C000386,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx01110000110  mtdcr 0, r0
{                   "dccci GPR , GPR",{0x7C00038C,0x001FF800}}, // 01111100000xxxxxxxxxx01110001100  dccci r0, r0
{             "divdu GPR , GPR , GPR",{0x7C000392,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx01110010010  divdu r0, r0, r0
{           "divdu . GPR , GPR , GPR",{0x7C000393,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx01110010011  divdu. r0, r0, r0
{             "divwu GPR , GPR , GPR",{0x7C000396,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx01110010110  divwu r0, r0, r0
{           "divwu . GPR , GPR , GPR",{0x7C000397,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx01110010111  divwu. r0, r0, r0
{                   "mtspr NUM , GPR",{0x7C0003A6,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx01110100110  mtspr 0, r0
{                    "dcbi NUM , GPR",{0x7C0003AC,0x0000F800}}, // 0111110000000000xxxxx01110101100  dcbi 0, r0
{              "nand GPR , GPR , GPR",{0x7C0003B8,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx01110111000  nand r0, r0, r0
{            "nand . GPR , GPR , GPR",{0x7C0003B9,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx01110111001  nand. r0, r0, r0
{            "stvxl VREG , NUM , GPR",{0x7C0003CE,0x03E0F800}}, // 011111xxxxx00000xxxxx01111001110  stvxl v0, 0, r0
{              "divd GPR , GPR , GPR",{0x7C0003D2,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx01111010010  divd r0, r0, r0
{            "divd . GPR , GPR , GPR",{0x7C0003D3,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx01111010011  divd. r0, r0, r0
{              "divw GPR , GPR , GPR",{0x7C0003D6,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx01111010110  divw r0, r0, r0
{            "divw . GPR , GPR , GPR",{0x7C0003D7,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx01111010111  divw. r0, r0, r0
{                             "slbia",{0x7C0003E4,0x00000000}}, // 01111100000000000000001111100100  slbia
{                 "popcntd GPR , GPR",{0x7C0003F4,0x03FF0000}}, // 011111xxxxxxxxxx0000001111110100  popcntd r0, r0
{             "ldbrx GPR , NUM , GPR",{0x7C000428,0x03E0F800}}, // 011111xxxxx00000xxxxx10000101000  ldbrx r0, 0, r0
{             "lwbrx GPR , NUM , GPR",{0x7C00042C,0x03E0F800}}, // 011111xxxxx00000xxxxx10000101100  lwbrx r0, 0, r0
{             "lfsx FREG , NUM , GPR",{0x7C00042E,0x03E0F800}}, // 011111xxxxx00000xxxxx10000101110  lfsx f0, 0, r0
{               "srw GPR , GPR , GPR",{0x7C000430,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx10000110000  srw r0, r0, r0
{             "srw . GPR , GPR , GPR",{0x7C000431,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx10000110001  srw. r0, r0, r0
{               "srd GPR , GPR , GPR",{0x7C000436,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx10000110110  srd r0, r0, r0
{             "srd . GPR , GPR , GPR",{0x7C000437,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx10000110111  srd. r0, r0, r0
{                           "tlbsync",{0x7C00046C,0x00000000}}, // 01111100000000000000010001101100  tlbsync
{            "lfsux FREG , NUM , GPR",{0x7C00046E,0x03E0F800}}, // 011111xxxxx00000xxxxx10001101110  lfsux f0, 0, r0
{            "lxsdx FREG , NUM , GPR",{0x7C000498,0x03E0F800}}, // 011111xxxxx00000xxxxx10010011000  lxsdx f0, 0, r0
{                    "mfsr GPR , NUM",{0x7C0004A6,0x03FFF801}}, // 011111xxxxxxxxxxxxxxx1001010011x  mfsr r0, 0
{              "lswi GPR , GPR , NUM",{0x7C0004AA,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx10010101010  lswi r0, r0, 0
{                          "sync NUM",{0x7C0004AC,0x00600000}}, // 011111000xx000000000010010101100  sync 0
{             "lfdx FREG , NUM , GPR",{0x7C0004AE,0x03E0F800}}, // 011111xxxxx00000xxxxx10010101110  lfdx f0, 0, r0
{            "lfdux FREG , NUM , GPR",{0x7C0004EE,0x03E0F800}}, // 011111xxxxx00000xxxxx10011101110  lfdux f0, 0, r0
{                  "mfsrin GPR , GPR",{0x7C000526,0x03FFF801}}, // 011111xxxxxxxxxxxxxxx1010010011x  mfsrin r0, r0
{            "stdbrx GPR , NUM , GPR",{0x7C000528,0x03E0F800}}, // 011111xxxxx00000xxxxx10100101000  stdbrx r0, 0, r0
{            "stwbrx GPR , NUM , GPR",{0x7C00052C,0x03E0F800}}, // 011111xxxxx00000xxxxx10100101100  stwbrx r0, 0, r0
{            "stfsx FREG , NUM , GPR",{0x7C00052E,0x03E0F800}}, // 011111xxxxx00000xxxxx10100101110  stfsx f0, 0, r0
{           "stfsux FREG , NUM , GPR",{0x7C00056E,0x03E0F800}}, // 011111xxxxx00000xxxxx10101101110  stfsux f0, 0, r0
{           "stxsdx FREG , NUM , GPR",{0x7C000598,0x03E0F800}}, // 011111xxxxx00000xxxxx10110011000  stxsdx f0, 0, r0
{          "stxsdx VSREG , NUM , GPR",{0x7C000599,0x03E0F800}}, // 011111xxxxx00000xxxxx10110011001  stxsdx vs32, 0, r0
{             "stswi GPR , GPR , NUM",{0x7C0005AA,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx10110101010  stswi r0, r0, 0
{            "stfdx FREG , NUM , GPR",{0x7C0005AE,0x03E0F800}}, // 011111xxxxx00000xxxxx10110101110  stfdx f0, 0, r0
{                    "dcba NUM , GPR",{0x7C0005EC,0x0000F800}}, // 0111110000000000xxxxx10111101100  dcba 0, r0
{           "stfdux FREG , NUM , GPR",{0x7C0005EE,0x03E0F800}}, // 011111xxxxx00000xxxxx10111101110  stfdux f0, 0, r0
{          "lxvw4x VSREG , NUM , GPR",{0x7C000618,0x03E0F800}}, // 011111xxxxx00000xxxxx11000011000  lxvw4x vs0, 0, r0
{                 "tlbivax GPR , GPR",{0x7C000624,0x001FF800}}, // 01111100000xxxxxxxxxx11000100100  tlbivax r0, r0
{             "lhbrx GPR , NUM , GPR",{0x7C00062C,0x03E0F800}}, // 011111xxxxx00000xxxxx11000101100  lhbrx r0, 0, r0
{              "sraw GPR , GPR , GPR",{0x7C000630,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx11000110000  sraw r0, r0, r0
{            "sraw . GPR , GPR , GPR",{0x7C000631,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx11000110001  sraw. r0, r0, r0
{              "srad GPR , GPR , GPR",{0x7C000634,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx11000110100  srad r0, r0, r0
{            "srad . GPR , GPR , GPR",{0x7C000635,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx11000110101  srad. r0, r0, r0
{                           "dss NUM",{0x7C00066C,0x00600000}}, // 011111000xx000000000011001101100  dss 0
{             "srawi GPR , GPR , NUM",{0x7C000670,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx11001110000  srawi r0, r0, 0
{           "srawi . GPR , GPR , NUM",{0x7C000671,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx11001110001  srawi. r0, r0, 0
{             "sradi GPR , GPR , NUM",{0x7C000674,0x03FFF802}}, // 011111xxxxxxxxxxxxxxx110011101x0  sradi r0, r0, 0
{           "sradi . GPR , GPR , NUM",{0x7C000675,0x03FFF802}}, // 011111xxxxxxxxxxxxxxx110011101x1  sradi. r0, r0, 0
{          "lxvd2x VSREG , NUM , GPR",{0x7C000698,0x03E0F800}}, // 011111xxxxx00000xxxxx11010011000  lxvd2x vs0, 0, r0
{                             "eieio",{0x7C0006AC,0x00000000}}, // 01111100000000000000011010101100  eieio
{                              "mbar",{0x7C0006AD,0x001FF801}}, // 01111100000xxxxxxxxxx1101010110x  mbar
{           "lfiwax FREG , NUM , GPR",{0x7C0006AE,0x03E0F800}}, // 011111xxxxx00000xxxxx11010101110  lfiwax f0, 0, r0
{           "lfiwzx FREG , NUM , GPR",{0x7C0006EE,0x03E0F800}}, // 011111xxxxx00000xxxxx11011101110  lfiwzx f0, 0, r0
{         "stxvw4x VSREG , NUM , GPR",{0x7C000718,0x03E0F801}}, // 011111xxxxx00000xxxxx1110001100x  stxvw4x vs0, 0, r0
{                   "tlbsx GPR , GPR",{0x7C000724,0x001FF800}}, // 01111100000xxxxxxxxxx11100100100  tlbsx r0, r0
{           "tlbsx . GPR , GPR , GPR",{0x7C000725,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx11100100101  tlbsx. r0, r0, r0
{                 "slbmfee GPR , GPR",{0x7C000726,0x03E0F800}}, // 011111xxxxx00000xxxxx11100100110  slbmfee r0, r0
{            "sthbrx GPR , NUM , GPR",{0x7C00072C,0x03E0F800}}, // 011111xxxxx00000xxxxx11100101100  sthbrx r0, 0, r0
{                   "extsh GPR , GPR",{0x7C000734,0x03FF0000}}, // 011111xxxxxxxxxx0000011100110100  extsh r0, r0
{                 "extsh . GPR , GPR",{0x7C000735,0x03FF0000}}, // 011111xxxxxxxxxx0000011100110101  extsh. r0, r0
{                             "tlbre",{0x7C000764,0x00000000}}, // 01111100000000000000011101100100  tlbre
{                   "extsb GPR , GPR",{0x7C000774,0x03FF0000}}, // 011111xxxxxxxxxx0000011101110100  extsb r0, r0
{                 "extsb . GPR , GPR",{0x7C000775,0x03FF0000}}, // 011111xxxxxxxxxx0000011101110101  extsb. r0, r0
{                   "iccci GPR , GPR",{0x7C00078C,0x001FF800}}, // 01111100000xxxxxxxxxx11110001100  iccci r0, r0
{         "stxvd2x VSREG , NUM , GPR",{0x7C000798,0x03E0F801}}, // 011111xxxxx00000xxxxx1111001100x  stxvd2x vs0, 0, r0
{                             "tlbwe",{0x7C0007A4,0x00000000}}, // 01111100000000000000011110100100  tlbwe
{                    "icbi NUM , GPR",{0x7C0007AC,0x0000F800}}, // 0111110000000000xxxxx11110101100  icbi 0, r0
{           "stfiwx FREG , NUM , GPR",{0x7C0007AE,0x03E0F800}}, // 011111xxxxx00000xxxxx11110101110  stfiwx f0, 0, r0
{                   "extsw GPR , GPR",{0x7C0007B4,0x03FF0000}}, // 011111xxxxxxxxxx0000011110110100  extsw r0, r0
{                 "extsw . GPR , GPR",{0x7C0007B5,0x03FF0000}}, // 011111xxxxxxxxxx0000011110110101  extsw. r0, r0
{                         "tlbli GPR",{0x7C0007E4,0x0000F800}}, // 0111110000000000xxxxx11111100100  tlbli r0
{                    "dcbz NUM , GPR",{0x7C0007EC,0x0000F800}}, // 0111110000000000xxxxx11111101100  dcbz 0, r0
{                "or GPR , GPR , GPR",{0x7C000B78,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx01101111000  or r0, r0, r1
{                 "tlbrelo GPR , GPR",{0x7C000F64,0x03FFF000}}, // 011111xxxxxxxxxxxxxx111101100100  tlbrelo r0, r0
{                         "tlbld GPR",{0x7C000FA4,0x0000F800}}, // 0111110000000000xxxxx11110100100  tlbld r1
{                 "tlbrehi GPR , GPR",{0x7C001764,0x03FFF000}}, // 011111xxxxxxxxxxxxxx011101100100  tlbrehi r0, r0
{                         "mfbr0 GPR",{0x7C002286,0x03E00000}}, // 011111xxxxx000000010001010000110  mfbr0 r0
{                         "mtbr0 GPR",{0x7C002386,0x03E00000}}, // 011111xxxxx000000010001110000110  mtbr0 r0
{                     "mfspefscr GPR",{0x7C0082A6,0x03E00000}}, // 011111xxxxx000001000001010100110  mfspefscr r0
{                     "mtspefscr GPR",{0x7C0083A6,0x03E00000}}, // 011111xxxxx000001000001110100110  mtspefscr r0
{             "lvsl VREG , GPR , GPR",{0x7C01000C,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx00000001100  lvsl v0, r1, r0
{            "lvebx VREG , GPR , GPR",{0x7C01000E,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx00000001110  lvebx v0, r1, r0
{        "isel GPR , GPR , GPR , CREG FLAG",{0x7C01001E,0x03FFFFC0}}, // 011111xxxxxxxxxxxxxxxxxxxx011110  isel r0, r1, r0, cr0eq
{             "lwarx GPR , GPR , GPR",{0x7C010028,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx00000101000  lwarx r0, r1, r0
{               "ldx GPR , GPR , GPR",{0x7C01002A,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx00000101010  ldx r0, r1, r0
{              "lwzx GPR , GPR , GPR",{0x7C01002E,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx00000101110  lwzx r0, r1, r0
{             "lvsr VREG , GPR , GPR",{0x7C01004C,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx00001001100  lvsr v0, r1, r0
{            "lvehx VREG , GPR , GPR",{0x7C01004E,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx00001001110  lvehx v0, r1, r0
{              "ldux GPR , GPR , GPR",{0x7C01006A,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx00001101010  ldux r0, r1, r0
{                   "dcbst GPR , GPR",{0x7C01006C,0x001FF800}}, // 01111100000xxxxxxxxxx00001101100  dcbst r1, r0
{             "lwzux GPR , GPR , GPR",{0x7C01006E,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx00001101110  lwzux r0, r1, r0
{            "lvewx VREG , GPR , GPR",{0x7C01008E,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx00010001110  lvewx v0, r1, r0
{             "ldarx GPR , GPR , GPR",{0x7C0100A8,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx00010101000  ldarx r0, r1, r0
{                    "dcbf GPR , GPR",{0x7C0100AC,0x001FF800}}, // 01111100000xxxxxxxxxx00010101100  dcbf r1, r0
{              "lbzx GPR , GPR , GPR",{0x7C0100AE,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx00010101110  lbzx r0, r1, r0
{              "lvx VREG , GPR , GPR",{0x7C0100CE,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx00011001110  lvx v0, r1, r0
{             "lbzux GPR , GPR , GPR",{0x7C0100EE,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx00011101110  lbzux r0, r1, r0
{           "stvebx VREG , GPR , GPR",{0x7C01010E,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx00100001110  stvebx v0, r1, r0
{                   "mtmsr GPR , NUM",{0x7C010124,0x03FEF801}}, // 011111xxxxxxxxx1xxxxx0010010010x  mtmsr r0, 1
{              "stdx GPR , GPR , GPR",{0x7C01012A,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx00100101010  stdx r0, r1, r0
{           "stwcx . GPR , GPR , GPR",{0x7C01012D,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx00100101101  stwcx. r0, r1, r0
{              "stwx GPR , GPR , GPR",{0x7C01012E,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx00100101110  stwx r0, r1, r0
{           "stvehx VREG , GPR , GPR",{0x7C01014E,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx00101001110  stvehx v0, r1, r0
{                  "mtmsrd GPR , NUM",{0x7C010164,0x03FEF801}}, // 011111xxxxxxxxx1xxxxx0010110010x  mtmsrd r0, 1
{             "stdux GPR , GPR , GPR",{0x7C01016A,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx00101101010  stdux r0, r1, r0
{             "stwux GPR , GPR , GPR",{0x7C01016E,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx00101101110  stwux r0, r1, r0
{           "stvewx VREG , GPR , GPR",{0x7C01018E,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx00110001110  stvewx v0, r1, r0
{           "stdcx . GPR , GPR , GPR",{0x7C0101AD,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx00110101101  stdcx. r0, r1, r0
{              "stbx GPR , GPR , GPR",{0x7C0101AE,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx00110101110  stbx r0, r1, r0
{             "stvx VREG , GPR , GPR",{0x7C0101CE,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx00111001110  stvx v0, r1, r0
{                  "dcbtst GPR , GPR",{0x7C0101EC,0x001FF800}}, // 01111100000xxxxxxxxxx00111101100  dcbtst r1, r0
{             "stbux GPR , GPR , GPR",{0x7C0101EE,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx00111101110  stbux r0, r1, r0
{                    "dcbt GPR , GPR",{0x7C01022C,0x001FF800}}, // 01111100000xxxxxxxxxx01000101100  dcbt r1, r0
{              "lhzx GPR , GPR , GPR",{0x7C01022E,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx01000101110  lhzx r0, r1, r0
{             "lhzux GPR , GPR , GPR",{0x7C01026E,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx01001101110  lhzux r0, r1, r0
{          "lxvdsx VSREG , GPR , GPR",{0x7C010298,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx01010011000  lxvdsx vs0, r1, r0
{                         "mfxer GPR",{0x7C0102A6,0x03E00000}}, // 011111xxxxx000010000001010100110  mfxer r0
{              "lwax GPR , GPR , GPR",{0x7C0102AA,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx01010101010  lwax r0, r1, r0
{              "lhax GPR , GPR , GPR",{0x7C0102AE,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx01010101110  lhax r0, r1, r0
{             "lvxl VREG , GPR , GPR",{0x7C0102CE,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx01011001110  lvxl v0, r1, r0
{             "lwaux GPR , GPR , GPR",{0x7C0102EA,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx01011101010  lwaux r0, r1, r0
{             "lhaux GPR , GPR , GPR",{0x7C0102EE,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx01011101110  lhaux r0, r1, r0
{              "sthx GPR , GPR , GPR",{0x7C01032E,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx01100101110  sthx r0, r1, r0
{             "sthux GPR , GPR , GPR",{0x7C01036E,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx01101101110  sthux r0, r1, r0
{                         "mtxer GPR",{0x7C0103A6,0x03E00000}}, // 011111xxxxx000010000001110100110  mtxer r0
{                    "dcbi GPR , GPR",{0x7C0103AC,0x001FF800}}, // 01111100000xxxxxxxxxx01110101100  dcbi r1, r0
{            "stvxl VREG , GPR , GPR",{0x7C0103CE,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx01111001110  stvxl v0, r1, r0
{             "ldbrx GPR , GPR , GPR",{0x7C010428,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx10000101000  ldbrx r0, r1, r0
{             "lwbrx GPR , GPR , GPR",{0x7C01042C,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx10000101100  lwbrx r0, r1, r0
{             "lfsx FREG , GPR , GPR",{0x7C01042E,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx10000101110  lfsx f0, r1, r0
{            "lfsux FREG , GPR , GPR",{0x7C01046E,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx10001101110  lfsux f0, r1, r0
{            "lxsdx FREG , GPR , GPR",{0x7C010498,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx10010011000  lxsdx f0, r1, r0
{             "lfdx FREG , GPR , GPR",{0x7C0104AE,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx10010101110  lfdx f0, r1, r0
{            "lfdux FREG , GPR , GPR",{0x7C0104EE,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx10011101110  lfdux f0, r1, r0
{            "stdbrx GPR , GPR , GPR",{0x7C010528,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx10100101000  stdbrx r0, r1, r0
{            "stwbrx GPR , GPR , GPR",{0x7C01052C,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx10100101100  stwbrx r0, r1, r0
{            "stfsx FREG , GPR , GPR",{0x7C01052E,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx10100101110  stfsx f0, r1, r0
{           "stfsux FREG , GPR , GPR",{0x7C01056E,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx10101101110  stfsux f0, r1, r0
{           "stxsdx FREG , GPR , GPR",{0x7C010598,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx10110011000  stxsdx f0, r1, r0
{          "stxsdx VSREG , GPR , GPR",{0x7C010599,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx10110011001  stxsdx vs32, r1, r0
{            "stfdx FREG , GPR , GPR",{0x7C0105AE,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx10110101110  stfdx f0, r1, r0
{                    "dcba GPR , GPR",{0x7C0105EC,0x001FF800}}, // 01111100000xxxxxxxxxx10111101100  dcba r1, r0
{           "stfdux FREG , GPR , GPR",{0x7C0105EE,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx10111101110  stfdux f0, r1, r0
{          "lxvw4x VSREG , GPR , GPR",{0x7C010618,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx11000011000  lxvw4x vs0, r1, r0
{             "lhbrx GPR , GPR , GPR",{0x7C01062C,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx11000101100  lhbrx r0, r1, r0
{          "lxvd2x VSREG , GPR , GPR",{0x7C010698,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx11010011000  lxvd2x vs0, r1, r0
{           "lfiwax FREG , GPR , GPR",{0x7C0106AE,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx11010101110  lfiwax f0, r1, r0
{           "lfiwzx FREG , GPR , GPR",{0x7C0106EE,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx11011101110  lfiwzx f0, r1, r0
{         "stxvw4x VSREG , GPR , GPR",{0x7C010718,0x03FFF801}}, // 011111xxxxxxxxxxxxxxx1110001100x  stxvw4x vs0, r1, r0
{            "sthbrx GPR , GPR , GPR",{0x7C01072C,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx11100101100  sthbrx r0, r1, r0
{         "stxvd2x VSREG , GPR , GPR",{0x7C010798,0x03FFF801}}, // 011111xxxxxxxxxxxxxxx1111001100x  stxvd2x vs0, r1, r0
{                 "tlbwehi GPR , GPR",{0x7C0107A4,0x03FFF000}}, // 011111xxxxxxxxxxxxxx011110100100  tlbwehi r0, r1
{                    "icbi GPR , GPR",{0x7C0107AC,0x001FF800}}, // 01111100000xxxxxxxxxx11110101100  icbi r1, r0
{           "stfiwx FREG , GPR , GPR",{0x7C0107AE,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx11110101110  stfiwx f0, r1, r0
{                    "dcbz GPR , GPR",{0x7C0107EC,0x001FF800}}, // 01111100000xxxxxxxxxx11111101100  dcbz r1, r0
{                 "tlbwelo GPR , GPR",{0x7C010FA4,0x03FFF000}}, // 011111xxxxxxxxxxxxxx111110100100  tlbwelo r0, r1
{                         "mfbr1 GPR",{0x7C012286,0x03E00000}}, // 011111xxxxx000010010001010000110  mfbr1 r0
{                         "mtbr1 GPR",{0x7C012386,0x03E00000}}, // 011111xxxxx000010010001110000110  mtbr1 r0
{                         "mfbr2 GPR",{0x7C022286,0x03E00000}}, // 011111xxxxx000100010001010000110  mfbr2 r0
{                         "mtbr2 GPR",{0x7C022386,0x03E00000}}, // 011111xxxxx000100010001110000110  mtbr2 r0
{                         "mfbr3 GPR",{0x7C032286,0x03E00000}}, // 011111xxxxx000110010001010000110  mfbr3 r0
{                         "mtbr3 GPR",{0x7C032386,0x03E00000}}, // 011111xxxxx000110010001110000110  mtbr3 r0
{                        "mfrtcu GPR",{0x7C0402A6,0x03E00000}}, // 011111xxxxx001000000001010100110  mfrtcu r0
{                         "mfbr4 GPR",{0x7C042286,0x03E00000}}, // 011111xxxxx001000010001010000110  mfbr4 r0
{                         "mtbr4 GPR",{0x7C042386,0x03E00000}}, // 011111xxxxx001000010001110000110  mtbr4 r0
{                        "mfrtcl GPR",{0x7C0502A6,0x03E00000}}, // 011111xxxxx001010000001010100110  mfrtcl r0
{                         "mfbr5 GPR",{0x7C052286,0x03E00000}}, // 011111xxxxx001010010001010000110  mfbr5 r0
{                         "mtbr5 GPR",{0x7C052386,0x03E00000}}, // 011111xxxxx001010010001110000110  mtbr5 r0
{                         "mfbr6 GPR",{0x7C062286,0x03E00000}}, // 011111xxxxx001100010001010000110  mfbr6 r0
{                         "mtbr6 GPR",{0x7C062386,0x03E00000}}, // 011111xxxxx001100010001110000110  mtbr6 r0
{                         "mfbr7 GPR",{0x7C072286,0x03E00000}}, // 011111xxxxx001110010001010000110  mfbr7 r0
{                         "mtbr7 GPR",{0x7C072386,0x03E00000}}, // 011111xxxxx001110010001110000110  mtbr7 r0
{                          "mflr GPR",{0x7C0802A6,0x03E00000}}, // 011111xxxxx010000000001010100110  mflr r0
{                          "mtlr GPR",{0x7C0803A6,0x03E00000}}, // 011111xxxxx010000000001110100110  mtlr r0
{                         "mfctr GPR",{0x7C0902A6,0x03E00000}}, // 011111xxxxx010010000001010100110  mfctr r0
{                         "mtctr GPR",{0x7C0903A6,0x03E00000}}, // 011111xxxxx010010000001110100110  mtctr r0
{                         "mftbu GPR",{0x7C0D42E6,0x03E00000}}, // 011111xxxxx011010100001011100110  mftbu r0
{                         "mfpid GPR",{0x7C100AA6,0x03E00000}}, // 011111xxxxx100000000101010100110  mfpid r0
{                         "mtpid GPR",{0x7C100BA6,0x03E00000}}, // 011111xxxxx100000000101110100110  mtpid r0
{                  "mfocrf GPR , NUM",{0x7C101026,0x03EFF000}}, // 011111xxxxx1xxxxxxxx000000100110  mfocrf r0, 1
{                  "mtocrf NUM , GPR",{0x7C101120,0x03EFF000}}, // 011111xxxxx1xxxxxxxx000100100000  mtocrf 1, r0
{                 "mfibatu GPR , NUM",{0x7C1082A6,0x03E60000}}, // 011111xxxxx10xx01000001010100110  mfibatu r0, 0
{                 "mtibatu NUM , GPR",{0x7C1083A6,0x03E60000}}, // 011111xxxxx10xx01000001110100110  mtibatu 0, r0
{                        "mfdscr GPR",{0x7C1102A6,0x03E00000}}, // 011111xxxxx100010000001010100110  mfdscr r0
{                        "mtdscr GPR",{0x7C1103A6,0x03E00000}}, // 011111xxxxx100010000001110100110  mtdscr r0
{                 "mfibatl GPR , NUM",{0x7C1182A6,0x03E60000}}, // 011111xxxxx10xx11000001010100110  mfibatl r0, 0
{                 "mtibatl NUM , GPR",{0x7C1183A6,0x03E60000}}, // 011111xxxxx10xx11000001110100110  mtibatl 0, r0
{                       "mfdsisr GPR",{0x7C1202A6,0x03E00000}}, // 011111xxxxx100100000001010100110  mfdsisr r0
{                       "mtdsisr GPR",{0x7C1203A6,0x03E00000}}, // 011111xxxxx100100000001110100110  mtdsisr r0
{                         "mfdar GPR",{0x7C1302A6,0x03E00000}}, // 011111xxxxx100110000001010100110  mfdar r0
{                         "mtdar GPR",{0x7C1303A6,0x03E00000}}, // 011111xxxxx100110000001110100110  mtdar r0
{                         "mfesr GPR",{0x7C14F2A6,0x03E00000}}, // 011111xxxxx101001111001010100110  mfesr r0
{                         "mtesr GPR",{0x7C14F3A6,0x03E00000}}, // 011111xxxxx101001111001110100110  mtesr r0
{                        "mfdear GPR",{0x7C15F2A6,0x03E00000}}, // 011111xxxxx101011111001010100110  mfdear r0
{                        "mtdear GPR",{0x7C15F3A6,0x03E00000}}, // 011111xxxxx101011111001110100110  mtdear r0
{                         "mfasr GPR",{0x7C1842A6,0x03E00000}}, // 011111xxxxx110000100001010100110  mfasr r0
{                 "mfdbatu GPR , NUM",{0x7C1882A6,0x03E60000}}, // 011111xxxxx11xx01000001010100110  mfdbatu r0, 0
{                 "mtdbatu NUM , GPR",{0x7C1883A6,0x03E60000}}, // 011111xxxxx11xx01000001110100110  mtdbatu 0, r0
{                 "mfdbatl GPR , NUM",{0x7C1982A6,0x03E60000}}, // 011111xxxxx11xx11000001010100110  mfdbatl r0, 0
{                 "mtdbatl NUM , GPR",{0x7C1983A6,0x03E60000}}, // 011111xxxxx11xx11000001110100110  mtdbatl 0, r0
{                         "mftcr GPR",{0x7C1AF2A6,0x03E00000}}, // 011111xxxxx110101111001010100110  mftcr r0
{                         "mttcr GPR",{0x7C1AF3A6,0x03E00000}}, // 011111xxxxx110101111001110100110  mttcr r0
{                        "mfdccr GPR",{0x7C1AFAA6,0x03E00000}}, // 011111xxxxx110101111101010100110  mfdccr r0
{                        "mtdccr GPR",{0x7C1AFBA6,0x03E00000}}, // 011111xxxxx110101111101110100110  mtdccr r0
{                        "mficcr GPR",{0x7C1BFAA6,0x03E00000}}, // 011111xxxxx110111111101010100110  mficcr r0
{                        "mticcr GPR",{0x7C1BFBA6,0x03E00000}}, // 011111xxxxx110111111101110100110  mticcr r0
{                        "mfcfar GPR",{0x7C1C02A6,0x03E00000}}, // 011111xxxxx111000000001010100110  mfcfar r0
{                        "mtcfar GPR",{0x7C1C03A6,0x03E00000}}, // 011111xxxxx111000000001110100110  mtcfar r0
{                         "mttbl GPR",{0x7C1C43A6,0x03E00000}}, // 011111xxxxx111000100001110100110  mttbl r0
{                        "mftbhi GPR",{0x7C1CF2A6,0x03E00000}}, // 011111xxxxx111001111001010100110  mftbhi r0
{                        "mttbhi GPR",{0x7C1CF3A6,0x03E00000}}, // 011111xxxxx111001111001110100110  mttbhi r0
{                         "mfamr GPR",{0x7C1D02A6,0x03E00000}}, // 011111xxxxx111010000001010100110  mfamr r0
{                         "mtamr GPR",{0x7C1D03A6,0x03E00000}}, // 011111xxxxx111010000001110100110  mtamr r0
{                         "mttbu GPR",{0x7C1D43A6,0x03E00000}}, // 011111xxxxx111010100001110100110  mttbu r0
{                        "mftblo GPR",{0x7C1DF2A6,0x03E00000}}, // 011111xxxxx111011111001010100110  mftblo r0
{                        "mttblo GPR",{0x7C1DF3A6,0x03E00000}}, // 011111xxxxx111011111001110100110  mttblo r0
{                        "mfsrr2 GPR",{0x7C1EF2A6,0x03E00000}}, // 011111xxxxx111101111001010100110  mfsrr2 r0
{                        "mtsrr2 GPR",{0x7C1EF3A6,0x03E00000}}, // 011111xxxxx111101111001110100110  mtsrr2 r0
{                         "mfpvr GPR",{0x7C1F42A6,0x03E00000}}, // 011111xxxxx111110100001010100110  mfpvr r0
{                        "mfsrr3 GPR",{0x7C1FF2A6,0x03E00000}}, // 011111xxxxx111111111001010100110  mfsrr3 r0
{                        "mtsrr3 GPR",{0x7C1FF3A6,0x03E00000}}, // 011111xxxxx111111111001110100110  mtsrr3 r0
{                    "cmpd GPR , GPR",{0x7C200000,0x001FF800}}, // 01111100001xxxxxxxxxx00000000000  cmpd r0, r0
{                   "twlgt GPR , GPR",{0x7C200008,0x001FF800}}, // 01111100001xxxxxxxxxx00000001000  twlgt r0, r0
{                   "cmpld GPR , GPR",{0x7C200040,0x001FF800}}, // 01111100001xxxxxxxxxx00001000000  cmpld r0, r0
{                           "waitrsv",{0x7C20007C,0x00000000}}, // 01111100001000000000000001111100  waitrsv
{                   "tdlgt GPR , GPR",{0x7C200088,0x001FF800}}, // 01111100001xxxxxxxxxx00010001000  tdlgt r0, r0
{                   "tlbie GPR , GPR",{0x7C200264,0x03E0F800}}, // 011111xxxxx00000xxxxx01001100100  tlbie r0,r1
{                            "lwsync",{0x7C2004AC,0x00000000}}, // 01111100001000000000010010101100  lwsync
{                          "mbar NUM",{0x7C2006AC,0x03FFF801}}, // 011111xxxxxxxxxxxxxxx1101010110x  mbar 1
{             "tlbsx GPR , GPR , GPR",{0x7C200724,0x03FFF800}}, // 011111xxxxxxxxxxxxxxx11100100100  tlbsx r1, r0, r0
{                   "dcbzl NUM , GPR",{0x7C2007EC,0x0000F800}}, // 0111110000100000xxxxx11111101100  dcbzl 0, r0
{                   "dcbzl GPR , GPR",{0x7C2107EC,0x001FF800}}, // 01111100001xxxxxxxxxx11111101100  dcbzl r1, r0
{                   "twllt GPR , GPR",{0x7C400008,0x001FF800}}, // 01111100010xxxxxxxxxx00000001000  twllt r0, r0
{                          "waitimpl",{0x7C40007C,0x00000000}}, // 01111100010000000000000001111100  waitimpl
{                   "tdllt GPR , GPR",{0x7C400088,0x001FF800}}, // 01111100010xxxxxxxxxx00010001000  tdllt r0, r0
{                           "ptesync",{0x7C4004AC,0x00000000}}, // 01111100010000000000010010101100  ptesync
{                          "wait NUM",{0x7C60007C,0x00000000}}, // 01111100011000000000000001111100  wait 3
{             "cmpw CREG , GPR , GPR",{0x7C800000,0x039FF800}}, // 011111xxx00xxxxxxxxxx00000000000  cmpw cr1, r0, r0
{                    "tweq GPR , GPR",{0x7C800008,0x001FF800}}, // 01111100100xxxxxxxxxx00000001000  tweq r0, r0
{            "cmplw CREG , GPR , GPR",{0x7C800040,0x039FF800}}, // 011111xxx00xxxxxxxxxx00001000000  cmplw cr1, r0, r0
{                    "tdeq GPR , GPR",{0x7C800088,0x001FF800}}, // 01111100100xxxxxxxxxx00010001000  tdeq r0, r0
{             "cmpd CREG , GPR , GPR",{0x7CA00000,0x039FF800}}, // 011111xxx01xxxxxxxxxx00000000000  cmpd cr1, r0, r0
{            "cmpld CREG , GPR , GPR",{0x7CA00040,0x039FF800}}, // 011111xxx01xxxxxxxxxx00001000000  cmpld cr1, r0, r0
{                    "twgt GPR , GPR",{0x7D000008,0x001FF800}}, // 01111101000xxxxxxxxxx00000001000  twgt r0, r0
{                    "tdgt GPR , GPR",{0x7D000088,0x001FF800}}, // 01111101000xxxxxxxxxx00010001000  tdgt r0, r0
{                    "twlt GPR , GPR",{0x7E000008,0x001FF800}}, // 01111110000xxxxxxxxxx00000001000  twlt r0, r0
{                    "tdlt GPR , GPR",{0x7E000088,0x001FF800}}, // 01111110000xxxxxxxxxx00010001000  tdlt r0, r0
{              "dstt GPR , GPR , NUM",{0x7E0002AC,0x007FF800}}, // 011111100xxxxxxxxxxxx01010101100  dstt r0, r0, 0
{            "dststt GPR , GPR , NUM",{0x7E0002EC,0x007FF800}}, // 011111100xxxxxxxxxxxx01011101100  dststt r0, r0, 0
{                            "dssall",{0x7E00066C,0x00000000}}, // 01111110000000000000011001101100  dssall
{                    "twne GPR , GPR",{0x7F000008,0x001FF800}}, // 01111111000xxxxxxxxxx00000001000  twne r0, r0
{                    "tdne GPR , GPR",{0x7F000088,0x001FF800}}, // 01111111000xxxxxxxxxx00010001000  tdne r0, r0
{                              "trap",{0x7FE00008,0x00000000}}, // 01111111111000000000000000001000  trap
{                     "tdu GPR , GPR",{0x7FE00088,0x001FF800}}, // 01111111111xxxxxxxxxx00010001000  tdu r0, r0
{                     "twu GPR , GPR",{0x7FE00808,0x001FF800}}, // 01111111111xxxxxxxxxx00000001000  twu r0, r1
{             "lwz GPR , NUM ( NUM )",{0x80000000,0x03E0FFFF}}, // 100000xxxxx00000xxxxxxxxxxxxxxxx  lwz r0, 0(0)
{             "lwz GPR , NUM ( GPR )",{0x80010000,0x03FFFFFF}}, // 100000xxxxxxxxxxxxxxxxxxxxxxxxxx  lwz r0, 0(r1)
{            "lwzu GPR , NUM ( NUM )",{0x84000000,0x03E0FFFF}}, // 100001xxxxx00000xxxxxxxxxxxxxxxx  lwzu r0, 0(0)
{            "lwzu GPR , NUM ( GPR )",{0x84010000,0x03FFFFFF}}, // 100001xxxxxxxxxxxxxxxxxxxxxxxxxx  lwzu r0, 0(r1)
{             "lbz GPR , NUM ( NUM )",{0x88000000,0x03E0FFFF}}, // 100010xxxxx00000xxxxxxxxxxxxxxxx  lbz r0, 0(0)
{             "lbz GPR , NUM ( GPR )",{0x88010000,0x03FFFFFF}}, // 100010xxxxxxxxxxxxxxxxxxxxxxxxxx  lbz r0, 0(r1)
{            "lbzu GPR , NUM ( NUM )",{0x8C000000,0x03E0FFFF}}, // 100011xxxxx00000xxxxxxxxxxxxxxxx  lbzu r0, 0(0)
{            "lbzu GPR , NUM ( GPR )",{0x8C010000,0x03FFFFFF}}, // 100011xxxxxxxxxxxxxxxxxxxxxxxxxx  lbzu r0, 0(r1)
{             "stw GPR , NUM ( NUM )",{0x90000000,0x03E0FFFF}}, // 100100xxxxx00000xxxxxxxxxxxxxxxx  stw r0, 0(0)
{             "stw GPR , NUM ( GPR )",{0x90010000,0x03FFFFFF}}, // 100100xxxxxxxxxxxxxxxxxxxxxxxxxx  stw r0, 0(r1)
{            "stwu GPR , NUM ( NUM )",{0x94000000,0x03E0FFFF}}, // 100101xxxxx00000xxxxxxxxxxxxxxxx  stwu r0, 0(0)
{            "stwu GPR , NUM ( GPR )",{0x94010000,0x03FFFFFF}}, // 100101xxxxxxxxxxxxxxxxxxxxxxxxxx  stwu r0, 0(r1)
{             "stb GPR , NUM ( NUM )",{0x98000000,0x03E0FFFF}}, // 100110xxxxx00000xxxxxxxxxxxxxxxx  stb r0, 0(0)
{             "stb GPR , NUM ( GPR )",{0x98010000,0x03FFFFFF}}, // 100110xxxxxxxxxxxxxxxxxxxxxxxxxx  stb r0, 0(r1)
{            "stbu GPR , NUM ( NUM )",{0x9C000000,0x03E0FFFF}}, // 100111xxxxx00000xxxxxxxxxxxxxxxx  stbu r0, 0(0)
{            "stbu GPR , NUM ( GPR )",{0x9C010000,0x03FFFFFF}}, // 100111xxxxxxxxxxxxxxxxxxxxxxxxxx  stbu r0, 0(r1)
{             "lhz GPR , NUM ( NUM )",{0xA0000000,0x03E0FFFF}}, // 101000xxxxx00000xxxxxxxxxxxxxxxx  lhz r0, 0(0)
{             "lhz GPR , NUM ( GPR )",{0xA0010000,0x03FFFFFF}}, // 101000xxxxxxxxxxxxxxxxxxxxxxxxxx  lhz r0, 0(r1)
{            "lhzu GPR , NUM ( NUM )",{0xA4000000,0x03E0FFFF}}, // 101001xxxxx00000xxxxxxxxxxxxxxxx  lhzu r0, 0(0)
{            "lhzu GPR , NUM ( GPR )",{0xA4010000,0x03FFFFFF}}, // 101001xxxxxxxxxxxxxxxxxxxxxxxxxx  lhzu r0, 0(r1)
{             "lha GPR , NUM ( NUM )",{0xA8000000,0x03E0FFFF}}, // 101010xxxxx00000xxxxxxxxxxxxxxxx  lha r0, 0(0)
{             "lha GPR , NUM ( GPR )",{0xA8010000,0x03FFFFFF}}, // 101010xxxxxxxxxxxxxxxxxxxxxxxxxx  lha r0, 0(r1)
{            "lhau GPR , NUM ( NUM )",{0xAC000000,0x03E0FFFF}}, // 101011xxxxx00000xxxxxxxxxxxxxxxx  lhau r0, 0(0)
{            "lhau GPR , NUM ( GPR )",{0xAC010000,0x03FFFFFF}}, // 101011xxxxxxxxxxxxxxxxxxxxxxxxxx  lhau r0, 0(r1)
{             "sth GPR , NUM ( NUM )",{0xB0000000,0x03E0FFFF}}, // 101100xxxxx00000xxxxxxxxxxxxxxxx  sth r0, 0(0)
{             "sth GPR , NUM ( GPR )",{0xB0010000,0x03FFFFFF}}, // 101100xxxxxxxxxxxxxxxxxxxxxxxxxx  sth r0, 0(r1)
{            "sthu GPR , NUM ( NUM )",{0xB4000000,0x03E0FFFF}}, // 101101xxxxx00000xxxxxxxxxxxxxxxx  sthu r0, 0(0)
{            "sthu GPR , NUM ( GPR )",{0xB4010000,0x03FFFFFF}}, // 101101xxxxxxxxxxxxxxxxxxxxxxxxxx  sthu r0, 0(r1)
{             "lmw GPR , NUM ( NUM )",{0xB8000000,0x03E0FFFF}}, // 101110xxxxx00000xxxxxxxxxxxxxxxx  lmw r0, 0(0)
{             "lmw GPR , NUM ( GPR )",{0xB8010000,0x03FFFFFF}}, // 101110xxxxxxxxxxxxxxxxxxxxxxxxxx  lmw r0, 0(r1)
{            "stmw GPR , NUM ( NUM )",{0xBC000000,0x03E0FFFF}}, // 101111xxxxx00000xxxxxxxxxxxxxxxx  stmw r0, 0(0)
{            "stmw GPR , NUM ( GPR )",{0xBC010000,0x03FFFFFF}}, // 101111xxxxxxxxxxxxxxxxxxxxxxxxxx  stmw r0, 0(r1)
{            "lfs FREG , NUM ( NUM )",{0xC0000000,0x03E0FFFF}}, // 110000xxxxx00000xxxxxxxxxxxxxxxx  lfs f0, 0(0)
{            "lfs FREG , NUM ( GPR )",{0xC0010000,0x03FFFFFF}}, // 110000xxxxxxxxxxxxxxxxxxxxxxxxxx  lfs f0, 0(r1)
{           "lfsu FREG , NUM ( NUM )",{0xC4000000,0x03E0FFFF}}, // 110001xxxxx00000xxxxxxxxxxxxxxxx  lfsu f0, 0(0)
{           "lfsu FREG , NUM ( GPR )",{0xC4010000,0x03FFFFFF}}, // 110001xxxxxxxxxxxxxxxxxxxxxxxxxx  lfsu f0, 0(r1)
{            "lfd FREG , NUM ( NUM )",{0xC8000000,0x03E0FFFF}}, // 110010xxxxx00000xxxxxxxxxxxxxxxx  lfd f0, 0(0)
{            "lfd FREG , NUM ( GPR )",{0xC8010000,0x03FFFFFF}}, // 110010xxxxxxxxxxxxxxxxxxxxxxxxxx  lfd f0, 0(r1)
{           "lfdu FREG , NUM ( NUM )",{0xCC000000,0x03E0FFFF}}, // 110011xxxxx00000xxxxxxxxxxxxxxxx  lfdu f0, 0(0)
{           "lfdu FREG , NUM ( GPR )",{0xCC010000,0x03FFFFFF}}, // 110011xxxxxxxxxxxxxxxxxxxxxxxxxx  lfdu f0, 0(r1)
{           "stfs FREG , NUM ( NUM )",{0xD0000000,0x03E0FFFF}}, // 110100xxxxx00000xxxxxxxxxxxxxxxx  stfs f0, 0(0)
{           "stfs FREG , NUM ( GPR )",{0xD0010000,0x03FFFFFF}}, // 110100xxxxxxxxxxxxxxxxxxxxxxxxxx  stfs f0, 0(r1)
{          "stfsu FREG , NUM ( NUM )",{0xD4000000,0x03E0FFFF}}, // 110101xxxxx00000xxxxxxxxxxxxxxxx  stfsu f0, 0(0)
{          "stfsu FREG , NUM ( GPR )",{0xD4010000,0x03FFFFFF}}, // 110101xxxxxxxxxxxxxxxxxxxxxxxxxx  stfsu f0, 0(r1)
{           "stfd FREG , NUM ( NUM )",{0xD8000000,0x03E0FFFF}}, // 110110xxxxx00000xxxxxxxxxxxxxxxx  stfd f0, 0(0)
{           "stfd FREG , NUM ( GPR )",{0xD8010000,0x03FFFFFF}}, // 110110xxxxxxxxxxxxxxxxxxxxxxxxxx  stfd f0, 0(r1)
{          "stfdu FREG , NUM ( NUM )",{0xDC000000,0x03E0FFFF}}, // 110111xxxxx00000xxxxxxxxxxxxxxxx  stfdu f0, 0(0)
{          "stfdu FREG , NUM ( GPR )",{0xDC010000,0x03FFFFFF}}, // 110111xxxxxxxxxxxxxxxxxxxxxxxxxx  stfdu f0, 0(r1)
{              "ld GPR , NUM ( NUM )",{0xE8000000,0x03E0FFFC}}, // 111010xxxxx00000xxxxxxxxxxxxxx00  ld r0, 0(0)
{             "ldu GPR , NUM ( NUM )",{0xE8000001,0x03E0FFFC}}, // 111010xxxxx00000xxxxxxxxxxxxxx01  ldu r0, 0(0)
{             "lwa GPR , NUM ( NUM )",{0xE8000002,0x03E0FFFC}}, // 111010xxxxx00000xxxxxxxxxxxxxx10  lwa r0, 0(0)
{              "ld GPR , NUM ( GPR )",{0xE8010000,0x03FFFFFC}}, // 111010xxxxxxxxxxxxxxxxxxxxxxxx00  ld r0, 0(r1)
{             "ldu GPR , NUM ( GPR )",{0xE8010001,0x03FFFFFC}}, // 111010xxxxxxxxxxxxxxxxxxxxxxxx01  ldu r0, 0(r1)
{             "lwa GPR , NUM ( GPR )",{0xE8010002,0x03FFFFFC}}, // 111010xxxxxxxxxxxxxxxxxxxxxxxx10  lwa r0, 0(r1)
{          "fdivs FREG , FREG , FREG",{0xEC000024,0x03FFF800}}, // 111011xxxxxxxxxxxxxxx00000100100  fdivs f0, f0, f0
{        "fdivs . FREG , FREG , FREG",{0xEC000025,0x03FFF800}}, // 111011xxxxxxxxxxxxxxx00000100101  fdivs. f0, f0, f0
{          "fsubs FREG , FREG , FREG",{0xEC000028,0x03FFF800}}, // 111011xxxxxxxxxxxxxxx00000101000  fsubs f0, f0, f0
{        "fsubs . FREG , FREG , FREG",{0xEC000029,0x03FFF800}}, // 111011xxxxxxxxxxxxxxx00000101001  fsubs. f0, f0, f0
{          "fadds FREG , FREG , FREG",{0xEC00002A,0x03FFF800}}, // 111011xxxxxxxxxxxxxxx00000101010  fadds f0, f0, f0
{        "fadds . FREG , FREG , FREG",{0xEC00002B,0x03FFF800}}, // 111011xxxxxxxxxxxxxxx00000101011  fadds. f0, f0, f0
{                "fsqrts FREG , FREG",{0xEC00002C,0x03E0F800}}, // 111011xxxxx00000xxxxx00000101100  fsqrts f0, f0
{              "fsqrts . FREG , FREG",{0xEC00002D,0x03E0F800}}, // 111011xxxxx00000xxxxx00000101101  fsqrts. f0, f0
{                  "fres FREG , FREG",{0xEC000030,0x03E0F800}}, // 111011xxxxx00000xxxxx00000110000  fres f0, f0
{                "fres . FREG , FREG",{0xEC000031,0x03E0F800}}, // 111011xxxxx00000xxxxx00000110001  fres. f0, f0
{          "fmuls FREG , FREG , FREG",{0xEC000032,0x03FF07C0}}, // 111011xxxxxxxxxx00000xxxxx110010  fmuls f0, f0, f0
{        "fmuls . FREG , FREG , FREG",{0xEC000033,0x03FF07C0}}, // 111011xxxxxxxxxx00000xxxxx110011  fmuls. f0, f0, f0
{              "frsqrtes FREG , FREG",{0xEC000034,0x03E0F800}}, // 111011xxxxx00000xxxxx00000110100  frsqrtes f0, f0
{            "frsqrtes . FREG , FREG",{0xEC000035,0x03E0F800}}, // 111011xxxxx00000xxxxx00000110101  frsqrtes. f0, f0
{  "fmsubs FREG , FREG , FREG , FREG",{0xEC000038,0x03FFFFC0}}, // 111011xxxxxxxxxxxxxxxxxxxx111000  fmsubs f0, f0, f0, f0
{"fmsubs . FREG , FREG , FREG , FREG",{0xEC000039,0x03FFFFC0}}, // 111011xxxxxxxxxxxxxxxxxxxx111001  fmsubs. f0, f0, f0, f0
{  "fmadds FREG , FREG , FREG , FREG",{0xEC00003A,0x03FFFFC0}}, // 111011xxxxxxxxxxxxxxxxxxxx111010  fmadds f0, f0, f0, f0
{"fmadds . FREG , FREG , FREG , FREG",{0xEC00003B,0x03FFFFC0}}, // 111011xxxxxxxxxxxxxxxxxxxx111011  fmadds. f0, f0, f0, f0
{ "fnmsubs FREG , FREG , FREG , FREG",{0xEC00003C,0x03FFFFC0}}, // 111011xxxxxxxxxxxxxxxxxxxx111100  fnmsubs f0, f0, f0, f0
{"fnmsubs . FREG , FREG , FREG , FREG",{0xEC00003D,0x03FFFFC0}}, // 111011xxxxxxxxxxxxxxxxxxxx111101  fnmsubs. f0, f0, f0, f0
{ "fnmadds FREG , FREG , FREG , FREG",{0xEC00003E,0x03FFFFC0}}, // 111011xxxxxxxxxxxxxxxxxxxx111110  fnmadds f0, f0, f0, f0
{"fnmadds . FREG , FREG , FREG , FREG",{0xEC00003F,0x03FFFFC0}}, // 111011xxxxxxxxxxxxxxxxxxxx111111  fnmadds. f0, f0, f0, f0
{                "fcfids FREG , FREG",{0xEC00069C,0x03E0F800}}, // 111011xxxxx00000xxxxx11010011100  fcfids f0, f0
{              "fcfids . FREG , FREG",{0xEC00069D,0x03E0F800}}, // 111011xxxxx00000xxxxx11010011101  fcfids. f0, f0
{               "fcfidus FREG , FREG",{0xEC00079C,0x03E0F800}}, // 111011xxxxx00000xxxxx11110011100  fcfidus f0, f0
{             "fcfidus . FREG , FREG",{0xEC00079D,0x03E0F800}}, // 111011xxxxx00000xxxxx11110011101  fcfidus. f0, f0
{"xxsldwi VSREG , VSREG , VSREG , NUM",{0xF0000010,0x03FFFB07}}, // 111100xxxxxxxxxxxxxxx0xx00010xxx  xxsldwi vs0, vs0, vs0, 0
{"xxsel VSREG , VSREG , VSREG , VSREG",{0xF0000030,0x03FFFFCF}}, // 111100xxxxxxxxxxxxxxxxxxxx11xxxx  xxsel vs0, vs0, vs0, vs0
{       "xxspltd VSREG , VSREG , NUM",{0xF0000050,0x03FFFB07}}, // 111100xxxxxxxxxxxxxxx0xx01010xxx  xxspltd vs0, vs0, 0
{     "xxmrghd VSREG , VSREG , VSREG",{0xF0000052,0x03FFF807}}, // 111100xxxxxxxxxxxxxxx00001010xxx  xxmrghd vs0, vs0, vs32
{     "xxmrghw VSREG , VSREG , VSREG",{0xF0000090,0x03FFF807}}, // 111100xxxxxxxxxxxxxxx00010010xxx  xxmrghw vs0, vs0, vs0
{        "xsadddp FREG , FREG , FREG",{0xF0000100,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx00100000000  xsadddp f0, f0, f0
{       "xsadddp VSREG , FREG , FREG",{0xF0000101,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx00100000001  xsadddp vs32, f0, f0
{       "xsadddp FREG , FREG , VSREG",{0xF0000102,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx00100000010  xsadddp f0, f0, vs32
{      "xsadddp VSREG , FREG , VSREG",{0xF0000103,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx00100000011  xsadddp vs32, f0, vs32
{       "xsadddp FREG , VSREG , FREG",{0xF0000104,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx00100000100  xsadddp f0, vs32, f0
{      "xsadddp VSREG , VSREG , FREG",{0xF0000105,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx00100000101  xsadddp vs32, vs32, f0
{      "xsadddp FREG , VSREG , VSREG",{0xF0000106,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx00100000110  xsadddp f0, vs32, vs32
{     "xsadddp VSREG , VSREG , VSREG",{0xF0000107,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx00100000111  xsadddp vs32, vs32, vs32
{      "xsmaddadp FREG , FREG , FREG",{0xF0000108,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx00100001000  xsmaddadp f0, f0, f0
{     "xsmaddadp VSREG , FREG , FREG",{0xF0000109,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx00100001001  xsmaddadp vs32, f0, f0
{     "xsmaddadp FREG , FREG , VSREG",{0xF000010A,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx00100001010  xsmaddadp f0, f0, vs32
{    "xsmaddadp VSREG , FREG , VSREG",{0xF000010B,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx00100001011  xsmaddadp vs32, f0, vs32
{     "xsmaddadp FREG , VSREG , FREG",{0xF000010C,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx00100001100  xsmaddadp f0, vs32, f0
{    "xsmaddadp VSREG , VSREG , FREG",{0xF000010D,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx00100001101  xsmaddadp vs32, vs32, f0
{    "xsmaddadp FREG , VSREG , VSREG",{0xF000010E,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx00100001110  xsmaddadp f0, vs32, vs32
{   "xsmaddadp VSREG , VSREG , VSREG",{0xF000010F,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx00100001111  xsmaddadp vs32, vs32, vs32
{       "xscmpudp CREG , FREG , FREG",{0xF0000118,0x039FF800}}, // 111100xxx00xxxxxxxxxx00100011000  xscmpudp cr0, f0, f0
{      "xscmpudp CREG , FREG , VSREG",{0xF000011A,0x039FF800}}, // 111100xxx00xxxxxxxxxx00100011010  xscmpudp cr0, f0, vs32
{      "xscmpudp CREG , VSREG , FREG",{0xF000011C,0x039FF800}}, // 111100xxx00xxxxxxxxxx00100011100  xscmpudp cr0, vs32, f0
{     "xscmpudp CREG , VSREG , VSREG",{0xF000011E,0x039FF800}}, // 111100xxx00xxxxxxxxxx00100011110  xscmpudp cr0, vs32, vs32
{            "xscvdpuxws FREG , FREG",{0xF0000120,0x03E0F800}}, // 111100xxxxx00000xxxxx00100100000  xscvdpuxws f0, f0
{           "xscvdpuxws VSREG , FREG",{0xF0000121,0x03E0F800}}, // 111100xxxxx00000xxxxx00100100001  xscvdpuxws vs32, f0
{           "xscvdpuxws FREG , VSREG",{0xF0000122,0x03E0F800}}, // 111100xxxxx00000xxxxx00100100010  xscvdpuxws f0, vs32
{          "xscvdpuxws VSREG , VSREG",{0xF0000123,0x03E0F800}}, // 111100xxxxx00000xxxxx00100100011  xscvdpuxws vs32, vs32
{                "xsrdpi FREG , FREG",{0xF0000124,0x03E0F800}}, // 111100xxxxx00000xxxxx00100100100  xsrdpi f0, f0
{               "xsrdpi VSREG , FREG",{0xF0000125,0x03E0F800}}, // 111100xxxxx00000xxxxx00100100101  xsrdpi vs32, f0
{               "xsrdpi FREG , VSREG",{0xF0000126,0x03E0F800}}, // 111100xxxxx00000xxxxx00100100110  xsrdpi f0, vs32
{              "xsrdpi VSREG , VSREG",{0xF0000127,0x03E0F800}}, // 111100xxxxx00000xxxxx00100100111  xsrdpi vs32, vs32
{            "xsrsqrtedp FREG , FREG",{0xF0000128,0x03E0F800}}, // 111100xxxxx00000xxxxx00100101000  xsrsqrtedp f0, f0
{           "xsrsqrtedp VSREG , FREG",{0xF0000129,0x03E0F800}}, // 111100xxxxx00000xxxxx00100101001  xsrsqrtedp vs32, f0
{           "xsrsqrtedp FREG , VSREG",{0xF000012A,0x03E0F800}}, // 111100xxxxx00000xxxxx00100101010  xsrsqrtedp f0, vs32
{          "xsrsqrtedp VSREG , VSREG",{0xF000012B,0x03E0F800}}, // 111100xxxxx00000xxxxx00100101011  xsrsqrtedp vs32, vs32
{              "xssqrtdp FREG , FREG",{0xF000012C,0x03E0F800}}, // 111100xxxxx00000xxxxx00100101100  xssqrtdp f0, f0
{             "xssqrtdp VSREG , FREG",{0xF000012D,0x03E0F800}}, // 111100xxxxx00000xxxxx00100101101  xssqrtdp vs32, f0
{             "xssqrtdp FREG , VSREG",{0xF000012E,0x03E0F800}}, // 111100xxxxx00000xxxxx00100101110  xssqrtdp f0, vs32
{            "xssqrtdp VSREG , VSREG",{0xF000012F,0x03E0F800}}, // 111100xxxxx00000xxxxx00100101111  xssqrtdp vs32, vs32
{        "xssubdp FREG , FREG , FREG",{0xF0000140,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx00101000000  xssubdp f0, f0, f0
{       "xssubdp VSREG , FREG , FREG",{0xF0000141,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx00101000001  xssubdp vs32, f0, f0
{       "xssubdp FREG , FREG , VSREG",{0xF0000142,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx00101000010  xssubdp f0, f0, vs32
{      "xssubdp VSREG , FREG , VSREG",{0xF0000143,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx00101000011  xssubdp vs32, f0, vs32
{       "xssubdp FREG , VSREG , FREG",{0xF0000144,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx00101000100  xssubdp f0, vs32, f0
{      "xssubdp VSREG , VSREG , FREG",{0xF0000145,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx00101000101  xssubdp vs32, vs32, f0
{      "xssubdp FREG , VSREG , VSREG",{0xF0000146,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx00101000110  xssubdp f0, vs32, vs32
{     "xssubdp VSREG , VSREG , VSREG",{0xF0000147,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx00101000111  xssubdp vs32, vs32, vs32
{      "xsmaddmdp FREG , FREG , FREG",{0xF0000148,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx00101001000  xsmaddmdp f0, f0, f0
{     "xsmaddmdp VSREG , FREG , FREG",{0xF0000149,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx00101001001  xsmaddmdp vs32, f0, f0
{     "xsmaddmdp FREG , FREG , VSREG",{0xF000014A,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx00101001010  xsmaddmdp f0, f0, vs32
{    "xsmaddmdp VSREG , FREG , VSREG",{0xF000014B,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx00101001011  xsmaddmdp vs32, f0, vs32
{     "xsmaddmdp FREG , VSREG , FREG",{0xF000014C,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx00101001100  xsmaddmdp f0, vs32, f0
{    "xsmaddmdp VSREG , VSREG , FREG",{0xF000014D,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx00101001101  xsmaddmdp vs32, vs32, f0
{    "xsmaddmdp FREG , VSREG , VSREG",{0xF000014E,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx00101001110  xsmaddmdp f0, vs32, vs32
{   "xsmaddmdp VSREG , VSREG , VSREG",{0xF000014F,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx00101001111  xsmaddmdp vs32, vs32, vs32
{"xxpermdi VSREG , VSREG , VSREG , NUM",{0xF0000150,0x03FFFB07}}, // 111100xxxxxxxxxxxxxxx0xx01010xxx  xxpermdi vs0, vs0, vs0, 1
{       "xscmpodp CREG , FREG , FREG",{0xF0000158,0x039FF800}}, // 111100xxx00xxxxxxxxxx00101011000  xscmpodp cr0, f0, f0
{      "xscmpodp CREG , FREG , VSREG",{0xF000015A,0x039FF800}}, // 111100xxx00xxxxxxxxxx00101011010  xscmpodp cr0, f0, vs32
{      "xscmpodp CREG , VSREG , FREG",{0xF000015C,0x039FF800}}, // 111100xxx00xxxxxxxxxx00101011100  xscmpodp cr0, vs32, f0
{     "xscmpodp CREG , VSREG , VSREG",{0xF000015E,0x039FF800}}, // 111100xxx00xxxxxxxxxx00101011110  xscmpodp cr0, vs32, vs32
{            "xscvdpsxws FREG , FREG",{0xF0000160,0x03E0F800}}, // 111100xxxxx00000xxxxx00101100000  xscvdpsxws f0, f0
{           "xscvdpsxws VSREG , FREG",{0xF0000161,0x03E0F800}}, // 111100xxxxx00000xxxxx00101100001  xscvdpsxws vs32, f0
{           "xscvdpsxws FREG , VSREG",{0xF0000162,0x03E0F800}}, // 111100xxxxx00000xxxxx00101100010  xscvdpsxws f0, vs32
{          "xscvdpsxws VSREG , VSREG",{0xF0000163,0x03E0F800}}, // 111100xxxxx00000xxxxx00101100011  xscvdpsxws vs32, vs32
{               "xsrdpiz FREG , FREG",{0xF0000164,0x03E0F800}}, // 111100xxxxx00000xxxxx00101100100  xsrdpiz f0, f0
{              "xsrdpiz VSREG , FREG",{0xF0000165,0x03E0F800}}, // 111100xxxxx00000xxxxx00101100101  xsrdpiz vs32, f0
{              "xsrdpiz FREG , VSREG",{0xF0000166,0x03E0F800}}, // 111100xxxxx00000xxxxx00101100110  xsrdpiz f0, vs32
{             "xsrdpiz VSREG , VSREG",{0xF0000167,0x03E0F800}}, // 111100xxxxx00000xxxxx00101100111  xsrdpiz vs32, vs32
{                "xsredp FREG , FREG",{0xF0000168,0x03E0F800}}, // 111100xxxxx00000xxxxx00101101000  xsredp f0, f0
{               "xsredp VSREG , FREG",{0xF0000169,0x03E0F800}}, // 111100xxxxx00000xxxxx00101101001  xsredp vs32, f0
{               "xsredp FREG , VSREG",{0xF000016A,0x03E0F800}}, // 111100xxxxx00000xxxxx00101101010  xsredp f0, vs32
{              "xsredp VSREG , VSREG",{0xF000016B,0x03E0F800}}, // 111100xxxxx00000xxxxx00101101011  xsredp vs32, vs32
{        "xsmuldp FREG , FREG , FREG",{0xF0000180,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx00110000000  xsmuldp f0, f0, f0
{       "xsmuldp VSREG , FREG , FREG",{0xF0000181,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx00110000001  xsmuldp vs32, f0, f0
{       "xsmuldp FREG , FREG , VSREG",{0xF0000182,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx00110000010  xsmuldp f0, f0, vs32
{      "xsmuldp VSREG , FREG , VSREG",{0xF0000183,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx00110000011  xsmuldp vs32, f0, vs32
{       "xsmuldp FREG , VSREG , FREG",{0xF0000184,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx00110000100  xsmuldp f0, vs32, f0
{      "xsmuldp VSREG , VSREG , FREG",{0xF0000185,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx00110000101  xsmuldp vs32, vs32, f0
{      "xsmuldp FREG , VSREG , VSREG",{0xF0000186,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx00110000110  xsmuldp f0, vs32, vs32
{     "xsmuldp VSREG , VSREG , VSREG",{0xF0000187,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx00110000111  xsmuldp vs32, vs32, vs32
{      "xsmsubadp FREG , FREG , FREG",{0xF0000188,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx00110001000  xsmsubadp f0, f0, f0
{     "xsmsubadp VSREG , FREG , FREG",{0xF0000189,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx00110001001  xsmsubadp vs32, f0, f0
{     "xsmsubadp FREG , FREG , VSREG",{0xF000018A,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx00110001010  xsmsubadp f0, f0, vs32
{    "xsmsubadp VSREG , FREG , VSREG",{0xF000018B,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx00110001011  xsmsubadp vs32, f0, vs32
{     "xsmsubadp FREG , VSREG , FREG",{0xF000018C,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx00110001100  xsmsubadp f0, vs32, f0
{    "xsmsubadp VSREG , VSREG , FREG",{0xF000018D,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx00110001101  xsmsubadp vs32, vs32, f0
{    "xsmsubadp FREG , VSREG , VSREG",{0xF000018E,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx00110001110  xsmsubadp f0, vs32, vs32
{   "xsmsubadp VSREG , VSREG , VSREG",{0xF000018F,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx00110001111  xsmsubadp vs32, vs32, vs32
{     "xxmrglw VSREG , VSREG , VSREG",{0xF0000190,0x03FFF807}}, // 111100xxxxxxxxxxxxxxx00110010xxx  xxmrglw vs0, vs0, vs0
{               "xsrdpip FREG , FREG",{0xF00001A4,0x03E0F800}}, // 111100xxxxx00000xxxxx00110100100  xsrdpip f0, f0
{              "xsrdpip VSREG , FREG",{0xF00001A5,0x03E0F800}}, // 111100xxxxx00000xxxxx00110100101  xsrdpip vs32, f0
{              "xsrdpip FREG , VSREG",{0xF00001A6,0x03E0F800}}, // 111100xxxxx00000xxxxx00110100110  xsrdpip f0, vs32
{             "xsrdpip VSREG , VSREG",{0xF00001A7,0x03E0F800}}, // 111100xxxxx00000xxxxx00110100111  xsrdpip vs32, vs32
{             "xstsqrtdp CREG , FREG",{0xF00001A8,0x0380F800}}, // 111100xxx0000000xxxxx00110101000  xstsqrtdp cr0, f0
{            "xstsqrtdp CREG , VSREG",{0xF00001AA,0x0380F800}}, // 111100xxx0000000xxxxx00110101010  xstsqrtdp cr0, vs32
{               "xsrdpic FREG , FREG",{0xF00001AC,0x03E0F800}}, // 111100xxxxx00000xxxxx00110101100  xsrdpic f0, f0
{              "xsrdpic VSREG , FREG",{0xF00001AD,0x03E0F800}}, // 111100xxxxx00000xxxxx00110101101  xsrdpic vs32, f0
{              "xsrdpic FREG , VSREG",{0xF00001AE,0x03E0F800}}, // 111100xxxxx00000xxxxx00110101110  xsrdpic f0, vs32
{             "xsrdpic VSREG , VSREG",{0xF00001AF,0x03E0F800}}, // 111100xxxxx00000xxxxx00110101111  xsrdpic vs32, vs32
{        "xsdivdp FREG , FREG , FREG",{0xF00001C0,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx00111000000  xsdivdp f0, f0, f0
{       "xsdivdp VSREG , FREG , FREG",{0xF00001C1,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx00111000001  xsdivdp vs32, f0, f0
{       "xsdivdp FREG , FREG , VSREG",{0xF00001C2,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx00111000010  xsdivdp f0, f0, vs32
{      "xsdivdp VSREG , FREG , VSREG",{0xF00001C3,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx00111000011  xsdivdp vs32, f0, vs32
{       "xsdivdp FREG , VSREG , FREG",{0xF00001C4,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx00111000100  xsdivdp f0, vs32, f0
{      "xsdivdp VSREG , VSREG , FREG",{0xF00001C5,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx00111000101  xsdivdp vs32, vs32, f0
{      "xsdivdp FREG , VSREG , VSREG",{0xF00001C6,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx00111000110  xsdivdp f0, vs32, vs32
{     "xsdivdp VSREG , VSREG , VSREG",{0xF00001C7,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx00111000111  xsdivdp vs32, vs32, vs32
{      "xsmsubmdp FREG , FREG , FREG",{0xF00001C8,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx00111001000  xsmsubmdp f0, f0, f0
{     "xsmsubmdp VSREG , FREG , FREG",{0xF00001C9,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx00111001001  xsmsubmdp vs32, f0, f0
{     "xsmsubmdp FREG , FREG , VSREG",{0xF00001CA,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx00111001010  xsmsubmdp f0, f0, vs32
{    "xsmsubmdp VSREG , FREG , VSREG",{0xF00001CB,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx00111001011  xsmsubmdp vs32, f0, vs32
{     "xsmsubmdp FREG , VSREG , FREG",{0xF00001CC,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx00111001100  xsmsubmdp f0, vs32, f0
{    "xsmsubmdp VSREG , VSREG , FREG",{0xF00001CD,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx00111001101  xsmsubmdp vs32, vs32, f0
{    "xsmsubmdp FREG , VSREG , VSREG",{0xF00001CE,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx00111001110  xsmsubmdp f0, vs32, vs32
{   "xsmsubmdp VSREG , VSREG , VSREG",{0xF00001CF,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx00111001111  xsmsubmdp vs32, vs32, vs32
{               "xsrdpim FREG , FREG",{0xF00001E4,0x03E0F800}}, // 111100xxxxx00000xxxxx00111100100  xsrdpim f0, f0
{              "xsrdpim VSREG , FREG",{0xF00001E5,0x03E0F800}}, // 111100xxxxx00000xxxxx00111100101  xsrdpim vs32, f0
{              "xsrdpim FREG , VSREG",{0xF00001E6,0x03E0F800}}, // 111100xxxxx00000xxxxx00111100110  xsrdpim f0, vs32
{             "xsrdpim VSREG , VSREG",{0xF00001E7,0x03E0F800}}, // 111100xxxxx00000xxxxx00111100111  xsrdpim vs32, vs32
{       "xstdivdp CREG , FREG , FREG",{0xF00001E8,0x039FF800}}, // 111100xxx00xxxxxxxxxx00111101000  xstdivdp cr0, f0, f0
{      "xstdivdp CREG , FREG , VSREG",{0xF00001EA,0x039FF800}}, // 111100xxx00xxxxxxxxxx00111101010  xstdivdp cr0, f0, vs32
{      "xstdivdp CREG , VSREG , FREG",{0xF00001EC,0x039FF800}}, // 111100xxx00xxxxxxxxxx00111101100  xstdivdp cr0, vs32, f0
{     "xstdivdp CREG , VSREG , VSREG",{0xF00001EE,0x039FF800}}, // 111100xxx00xxxxxxxxxx00111101110  xstdivdp cr0, vs32, vs32
{     "xvaddsp VSREG , VSREG , VSREG",{0xF0000200,0x03FFF807}}, // 111100xxxxxxxxxxxxxxx01000000xxx  xvaddsp vs0, vs0, vs0
{   "xvmaddasp VSREG , VSREG , VSREG",{0xF0000208,0x03FFF807}}, // 111100xxxxxxxxxxxxxxx01000001xxx  xvmaddasp vs0, vs0, vs0
{   "xvcmpeqsp VSREG , VSREG , VSREG",{0xF0000218,0x03FFF807}}, // 111100xxxxxxxxxxxxxxx01000011xxx  xvcmpeqsp vs0, vs0, vs0
{          "xvcvspuxws VSREG , VSREG",{0xF0000220,0x03E0F803}}, // 111100xxxxx00000xxxxx010001000xx  xvcvspuxws vs0, vs0
{              "xvrspi VSREG , VSREG",{0xF0000224,0x03E0F803}}, // 111100xxxxx00000xxxxx010001001xx  xvrspi vs0, vs0
{          "xvrsqrtesp VSREG , VSREG",{0xF0000228,0x03E0F803}}, // 111100xxxxx00000xxxxx010001010xx  xvrsqrtesp vs0, vs0
{            "xvsqrtsp VSREG , VSREG",{0xF000022C,0x03E0F803}}, // 111100xxxxx00000xxxxx010001011xx  xvsqrtsp vs0, vs0
{     "xvsubsp VSREG , VSREG , VSREG",{0xF0000240,0x03FFF807}}, // 111100xxxxxxxxxxxxxxx01001000xxx  xvsubsp vs0, vs0, vs0
{   "xvmaddmsp VSREG , VSREG , VSREG",{0xF0000248,0x03FFF807}}, // 111100xxxxxxxxxxxxxxx01001001xxx  xvmaddmsp vs0, vs0, vs0
{             "xxswapd VSREG , VSREG",{0xF0000250,0x03FFF807}}, // 111100xxxxxxxxxxxxxxx01001010xxx  xxswapd vs0, vs0
{   "xvcmpgtsp VSREG , VSREG , VSREG",{0xF0000258,0x03FFF807}}, // 111100xxxxxxxxxxxxxxx01001011xxx  xvcmpgtsp vs0, vs0, vs0
{          "xvcvspsxws VSREG , VSREG",{0xF0000260,0x03E0F803}}, // 111100xxxxx00000xxxxx010011000xx  xvcvspsxws vs0, vs0
{             "xvrspiz VSREG , VSREG",{0xF0000264,0x03E0F803}}, // 111100xxxxx00000xxxxx010011001xx  xvrspiz vs0, vs0
{              "xvresp VSREG , VSREG",{0xF0000268,0x03E0F803}}, // 111100xxxxx00000xxxxx010011010xx  xvresp vs0, vs0
{     "xvmulsp VSREG , VSREG , VSREG",{0xF0000280,0x03FFF807}}, // 111100xxxxxxxxxxxxxxx01010000xxx  xvmulsp vs0, vs0, vs0
{   "xvmsubasp VSREG , VSREG , VSREG",{0xF0000288,0x03FFF807}}, // 111100xxxxxxxxxxxxxxx01010001xxx  xvmsubasp vs0, vs0, vs0
{       "xxspltw VSREG , VSREG , NUM",{0xF0000290,0x03E3F803}}, // 111100xxxxx000xxxxxxx010100100xx  xxspltw vs0, vs0, 0
{   "xvcmpgesp VSREG , VSREG , VSREG",{0xF0000298,0x03FFF807}}, // 111100xxxxxxxxxxxxxxx01010011xxx  xvcmpgesp vs0, vs0, vs0
{           "xvcvuxwsp VSREG , VSREG",{0xF00002A0,0x03E0F803}}, // 111100xxxxx00000xxxxx010101000xx  xvcvuxwsp vs0, vs0
{             "xvrspip VSREG , VSREG",{0xF00002A4,0x03E0F803}}, // 111100xxxxx00000xxxxx010101001xx  xvrspip vs0, vs0
{            "xvtsqrtsp CREG , VSREG",{0xF00002A8,0x0380F802}}, // 111100xxx0000000xxxxx010101010x0  xvtsqrtsp cr0, vs0
{             "xvrspic VSREG , VSREG",{0xF00002AC,0x03E0F803}}, // 111100xxxxx00000xxxxx010101011xx  xvrspic vs0, vs0
{     "xvdivsp VSREG , VSREG , VSREG",{0xF00002C0,0x03FFF807}}, // 111100xxxxxxxxxxxxxxx01011000xxx  xvdivsp vs0, vs0, vs0
{   "xvmsubmsp VSREG , VSREG , VSREG",{0xF00002C8,0x03FFF807}}, // 111100xxxxxxxxxxxxxxx01011001xxx  xvmsubmsp vs0, vs0, vs0
{           "xvcvsxwsp VSREG , VSREG",{0xF00002E0,0x03E0F803}}, // 111100xxxxx00000xxxxx010111000xx  xvcvsxwsp vs0, vs0
{             "xvrspim VSREG , VSREG",{0xF00002E4,0x03E0F803}}, // 111100xxxxx00000xxxxx010111001xx  xvrspim vs0, vs0
{     "xvtdivsp CREG , VSREG , VSREG",{0xF00002E8,0x039FF806}}, // 111100xxx00xxxxxxxxxx01011101xx0  xvtdivsp cr0, vs0, vs0
{     "xvadddp VSREG , VSREG , VSREG",{0xF0000300,0x03FFF807}}, // 111100xxxxxxxxxxxxxxx01100000xxx  xvadddp vs0, vs0, vs0
{   "xvmaddadp VSREG , VSREG , VSREG",{0xF0000308,0x03FFF807}}, // 111100xxxxxxxxxxxxxxx01100001xxx  xvmaddadp vs0, vs0, vs0
{   "xvcmpeqdp VSREG , VSREG , VSREG",{0xF0000318,0x03FFF807}}, // 111100xxxxxxxxxxxxxxx01100011xxx  xvcmpeqdp vs0, vs0, vs0
{          "xvcvdpuxws VSREG , VSREG",{0xF0000320,0x03E0F803}}, // 111100xxxxx00000xxxxx011001000xx  xvcvdpuxws vs0, vs0
{              "xvrdpi VSREG , VSREG",{0xF0000324,0x03E0F803}}, // 111100xxxxx00000xxxxx011001001xx  xvrdpi vs0, vs0
{          "xvrsqrtedp VSREG , VSREG",{0xF0000328,0x03E0F803}}, // 111100xxxxx00000xxxxx011001010xx  xvrsqrtedp vs0, vs0
{            "xvsqrtdp VSREG , VSREG",{0xF000032C,0x03E0F803}}, // 111100xxxxx00000xxxxx011001011xx  xvsqrtdp vs0, vs0
{     "xvsubdp VSREG , VSREG , VSREG",{0xF0000340,0x03FFF807}}, // 111100xxxxxxxxxxxxxxx01101000xxx  xvsubdp vs0, vs0, vs0
{   "xvmaddmdp VSREG , VSREG , VSREG",{0xF0000348,0x03FFF807}}, // 111100xxxxxxxxxxxxxxx01101001xxx  xvmaddmdp vs0, vs0, vs0
{     "xxmrgld VSREG , VSREG , VSREG",{0xF0000352,0x03FFF807}}, // 111100xxxxxxxxxxxxxxx01101010xxx  xxmrgld vs0, vs0, vs32
{   "xvcmpgtdp VSREG , VSREG , VSREG",{0xF0000358,0x03FFF807}}, // 111100xxxxxxxxxxxxxxx01101011xxx  xvcmpgtdp vs0, vs0, vs0
{          "xvcvdpsxws VSREG , VSREG",{0xF0000360,0x03E0F803}}, // 111100xxxxx00000xxxxx011011000xx  xvcvdpsxws vs0, vs0
{             "xvrdpiz VSREG , VSREG",{0xF0000364,0x03E0F803}}, // 111100xxxxx00000xxxxx011011001xx  xvrdpiz vs0, vs0
{              "xvredp VSREG , VSREG",{0xF0000368,0x03E0F803}}, // 111100xxxxx00000xxxxx011011010xx  xvredp vs0, vs0
{     "xvmuldp VSREG , VSREG , VSREG",{0xF0000380,0x03FFF807}}, // 111100xxxxxxxxxxxxxxx01110000xxx  xvmuldp vs0, vs0, vs0
{   "xvmsubadp VSREG , VSREG , VSREG",{0xF0000388,0x03FFF807}}, // 111100xxxxxxxxxxxxxxx01110001xxx  xvmsubadp vs0, vs0, vs0
{   "xvcmpgedp VSREG , VSREG , VSREG",{0xF0000398,0x03FFF807}}, // 111100xxxxxxxxxxxxxxx01110011xxx  xvcmpgedp vs0, vs0, vs0
{           "xvcvuxwdp VSREG , VSREG",{0xF00003A0,0x03E0F803}}, // 111100xxxxx00000xxxxx011101000xx  xvcvuxwdp vs0, vs0
{             "xvrdpip VSREG , VSREG",{0xF00003A4,0x03E0F803}}, // 111100xxxxx00000xxxxx011101001xx  xvrdpip vs0, vs0
{            "xvtsqrtdp CREG , VSREG",{0xF00003A8,0x0380F802}}, // 111100xxx0000000xxxxx011101010x0  xvtsqrtdp cr0, vs0
{             "xvrdpic VSREG , VSREG",{0xF00003AC,0x03E0F803}}, // 111100xxxxx00000xxxxx011101011xx  xvrdpic vs0, vs0
{     "xvdivdp VSREG , VSREG , VSREG",{0xF00003C0,0x03FFF807}}, // 111100xxxxxxxxxxxxxxx01111000xxx  xvdivdp vs0, vs0, vs0
{   "xvmsubmdp VSREG , VSREG , VSREG",{0xF00003C8,0x03FFF807}}, // 111100xxxxxxxxxxxxxxx01111001xxx  xvmsubmdp vs0, vs0, vs0
{           "xvcvsxwdp VSREG , VSREG",{0xF00003E0,0x03E0F803}}, // 111100xxxxx00000xxxxx011111000xx  xvcvsxwdp vs0, vs0
{             "xvrdpim VSREG , VSREG",{0xF00003E4,0x03E0F803}}, // 111100xxxxx00000xxxxx011111001xx  xvrdpim vs0, vs0
{     "xvtdivdp CREG , VSREG , VSREG",{0xF00003E8,0x039FF806}}, // 111100xxx00xxxxxxxxxx01111101xx0  xvtdivdp cr0, vs0, vs0
{      "xxland VSREG , VSREG , VSREG",{0xF0000410,0x03FFF807}}, // 111100xxxxxxxxxxxxxxx10000010xxx  xxland vs0, vs0, vs0
{              "xscvdpsp FREG , FREG",{0xF0000424,0x03E0F800}}, // 111100xxxxx00000xxxxx10000100100  xscvdpsp f0, f0
{             "xscvdpsp VSREG , FREG",{0xF0000425,0x03E0F800}}, // 111100xxxxx00000xxxxx10000100101  xscvdpsp vs32, f0
{             "xscvdpsp FREG , VSREG",{0xF0000426,0x03E0F800}}, // 111100xxxxx00000xxxxx10000100110  xscvdpsp f0, vs32
{            "xscvdpsp VSREG , VSREG",{0xF0000427,0x03E0F800}}, // 111100xxxxx00000xxxxx10000100111  xscvdpsp vs32, vs32
{     "xxlandc VSREG , VSREG , VSREG",{0xF0000450,0x03FFF807}}, // 111100xxxxxxxxxxxxxxx10001010xxx  xxlandc vs0, vs0, vs0
{       "xxlor VSREG , VSREG , VSREG",{0xF0000490,0x03FFF807}}, // 111100xxxxxxxxxxxxxxx10010010xxx  xxlor vs0, vs0, vs0
{      "xxlxor VSREG , VSREG , VSREG",{0xF00004D0,0x03FFF807}}, // 111100xxxxxxxxxxxxxxx10011010xxx  xxlxor vs0, vs0, vs0
{        "xsmaxdp FREG , FREG , FREG",{0xF0000500,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx10100000000  xsmaxdp f0, f0, f0
{       "xsmaxdp VSREG , FREG , FREG",{0xF0000501,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx10100000001  xsmaxdp vs32, f0, f0
{       "xsmaxdp FREG , FREG , VSREG",{0xF0000502,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx10100000010  xsmaxdp f0, f0, vs32
{      "xsmaxdp VSREG , FREG , VSREG",{0xF0000503,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx10100000011  xsmaxdp vs32, f0, vs32
{       "xsmaxdp FREG , VSREG , FREG",{0xF0000504,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx10100000100  xsmaxdp f0, vs32, f0
{      "xsmaxdp VSREG , VSREG , FREG",{0xF0000505,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx10100000101  xsmaxdp vs32, vs32, f0
{      "xsmaxdp FREG , VSREG , VSREG",{0xF0000506,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx10100000110  xsmaxdp f0, vs32, vs32
{     "xsmaxdp VSREG , VSREG , VSREG",{0xF0000507,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx10100000111  xsmaxdp vs32, vs32, vs32
{     "xsnmaddadp FREG , FREG , FREG",{0xF0000508,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx10100001000  xsnmaddadp f0, f0, f0
{    "xsnmaddadp VSREG , FREG , FREG",{0xF0000509,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx10100001001  xsnmaddadp vs32, f0, f0
{    "xsnmaddadp FREG , FREG , VSREG",{0xF000050A,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx10100001010  xsnmaddadp f0, f0, vs32
{   "xsnmaddadp VSREG , FREG , VSREG",{0xF000050B,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx10100001011  xsnmaddadp vs32, f0, vs32
{    "xsnmaddadp FREG , VSREG , FREG",{0xF000050C,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx10100001100  xsnmaddadp f0, vs32, f0
{   "xsnmaddadp VSREG , VSREG , FREG",{0xF000050D,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx10100001101  xsnmaddadp vs32, vs32, f0
{   "xsnmaddadp FREG , VSREG , VSREG",{0xF000050E,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx10100001110  xsnmaddadp f0, vs32, vs32
{  "xsnmaddadp VSREG , VSREG , VSREG",{0xF000050F,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx10100001111  xsnmaddadp vs32, vs32, vs32
{      "xxlnor VSREG , VSREG , VSREG",{0xF0000510,0x03FFF807}}, // 111100xxxxxxxxxxxxxxx10100010xxx  xxlnor vs0, vs0, vs0
{            "xscvdpuxds FREG , FREG",{0xF0000520,0x03E0F800}}, // 111100xxxxx00000xxxxx10100100000  xscvdpuxds f0, f0
{           "xscvdpuxds VSREG , FREG",{0xF0000521,0x03E0F800}}, // 111100xxxxx00000xxxxx10100100001  xscvdpuxds vs32, f0
{           "xscvdpuxds FREG , VSREG",{0xF0000522,0x03E0F800}}, // 111100xxxxx00000xxxxx10100100010  xscvdpuxds f0, vs32
{          "xscvdpuxds VSREG , VSREG",{0xF0000523,0x03E0F800}}, // 111100xxxxx00000xxxxx10100100011  xscvdpuxds vs32, vs32
{              "xscvspdp FREG , FREG",{0xF0000524,0x03E0F800}}, // 111100xxxxx00000xxxxx10100100100  xscvspdp f0, f0
{             "xscvspdp VSREG , FREG",{0xF0000525,0x03E0F800}}, // 111100xxxxx00000xxxxx10100100101  xscvspdp vs32, f0
{             "xscvspdp FREG , VSREG",{0xF0000526,0x03E0F800}}, // 111100xxxxx00000xxxxx10100100110  xscvspdp f0, vs32
{            "xscvspdp VSREG , VSREG",{0xF0000527,0x03E0F800}}, // 111100xxxxx00000xxxxx10100100111  xscvspdp vs32, vs32
{        "xsmindp FREG , FREG , FREG",{0xF0000540,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx10101000000  xsmindp f0, f0, f0
{       "xsmindp VSREG , FREG , FREG",{0xF0000541,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx10101000001  xsmindp vs32, f0, f0
{       "xsmindp FREG , FREG , VSREG",{0xF0000542,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx10101000010  xsmindp f0, f0, vs32
{      "xsmindp VSREG , FREG , VSREG",{0xF0000543,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx10101000011  xsmindp vs32, f0, vs32
{       "xsmindp FREG , VSREG , FREG",{0xF0000544,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx10101000100  xsmindp f0, vs32, f0
{      "xsmindp VSREG , VSREG , FREG",{0xF0000545,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx10101000101  xsmindp vs32, vs32, f0
{      "xsmindp FREG , VSREG , VSREG",{0xF0000546,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx10101000110  xsmindp f0, vs32, vs32
{     "xsmindp VSREG , VSREG , VSREG",{0xF0000547,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx10101000111  xsmindp vs32, vs32, vs32
{     "xsnmaddmdp FREG , FREG , FREG",{0xF0000548,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx10101001000  xsnmaddmdp f0, f0, f0
{    "xsnmaddmdp VSREG , FREG , FREG",{0xF0000549,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx10101001001  xsnmaddmdp vs32, f0, f0
{    "xsnmaddmdp FREG , FREG , VSREG",{0xF000054A,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx10101001010  xsnmaddmdp f0, f0, vs32
{   "xsnmaddmdp VSREG , FREG , VSREG",{0xF000054B,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx10101001011  xsnmaddmdp vs32, f0, vs32
{    "xsnmaddmdp FREG , VSREG , FREG",{0xF000054C,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx10101001100  xsnmaddmdp f0, vs32, f0
{   "xsnmaddmdp VSREG , VSREG , FREG",{0xF000054D,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx10101001101  xsnmaddmdp vs32, vs32, f0
{   "xsnmaddmdp FREG , VSREG , VSREG",{0xF000054E,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx10101001110  xsnmaddmdp f0, vs32, vs32
{  "xsnmaddmdp VSREG , VSREG , VSREG",{0xF000054F,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx10101001111  xsnmaddmdp vs32, vs32, vs32
{            "xscvdpsxds FREG , FREG",{0xF0000560,0x03E0F800}}, // 111100xxxxx00000xxxxx10101100000  xscvdpsxds f0, f0
{           "xscvdpsxds VSREG , FREG",{0xF0000561,0x03E0F800}}, // 111100xxxxx00000xxxxx10101100001  xscvdpsxds vs32, f0
{           "xscvdpsxds FREG , VSREG",{0xF0000562,0x03E0F800}}, // 111100xxxxx00000xxxxx10101100010  xscvdpsxds f0, vs32
{          "xscvdpsxds VSREG , VSREG",{0xF0000563,0x03E0F800}}, // 111100xxxxx00000xxxxx10101100011  xscvdpsxds vs32, vs32
{               "xsabsdp FREG , FREG",{0xF0000564,0x03E0F800}}, // 111100xxxxx00000xxxxx10101100100  xsabsdp f0, f0
{              "xsabsdp VSREG , FREG",{0xF0000565,0x03E0F800}}, // 111100xxxxx00000xxxxx10101100101  xsabsdp vs32, f0
{              "xsabsdp FREG , VSREG",{0xF0000566,0x03E0F800}}, // 111100xxxxx00000xxxxx10101100110  xsabsdp f0, vs32
{             "xsabsdp VSREG , VSREG",{0xF0000567,0x03E0F800}}, // 111100xxxxx00000xxxxx10101100111  xsabsdp vs32, vs32
{      "xscpsgndp FREG , FREG , FREG",{0xF0000580,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx10110000000  xscpsgndp f0, f0, f0
{     "xscpsgndp VSREG , FREG , FREG",{0xF0000581,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx10110000001  xscpsgndp vs32, f0, f0
{     "xscpsgndp FREG , FREG , VSREG",{0xF0000582,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx10110000010  xscpsgndp f0, f0, vs32
{    "xscpsgndp VSREG , FREG , VSREG",{0xF0000583,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx10110000011  xscpsgndp vs32, f0, vs32
{     "xscpsgndp FREG , VSREG , FREG",{0xF0000584,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx10110000100  xscpsgndp f0, vs32, f0
{    "xscpsgndp VSREG , VSREG , FREG",{0xF0000585,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx10110000101  xscpsgndp vs32, vs32, f0
{    "xscpsgndp FREG , VSREG , VSREG",{0xF0000586,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx10110000110  xscpsgndp f0, vs32, vs32
{   "xscpsgndp VSREG , VSREG , VSREG",{0xF0000587,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx10110000111  xscpsgndp vs32, vs32, vs32
{     "xsnmsubadp FREG , FREG , FREG",{0xF0000588,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx10110001000  xsnmsubadp f0, f0, f0
{    "xsnmsubadp VSREG , FREG , FREG",{0xF0000589,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx10110001001  xsnmsubadp vs32, f0, f0
{    "xsnmsubadp FREG , FREG , VSREG",{0xF000058A,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx10110001010  xsnmsubadp f0, f0, vs32
{   "xsnmsubadp VSREG , FREG , VSREG",{0xF000058B,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx10110001011  xsnmsubadp vs32, f0, vs32
{    "xsnmsubadp FREG , VSREG , FREG",{0xF000058C,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx10110001100  xsnmsubadp f0, vs32, f0
{   "xsnmsubadp VSREG , VSREG , FREG",{0xF000058D,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx10110001101  xsnmsubadp vs32, vs32, f0
{   "xsnmsubadp FREG , VSREG , VSREG",{0xF000058E,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx10110001110  xsnmsubadp f0, vs32, vs32
{  "xsnmsubadp VSREG , VSREG , VSREG",{0xF000058F,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx10110001111  xsnmsubadp vs32, vs32, vs32
{             "xscvuxddp FREG , FREG",{0xF00005A0,0x03E0F800}}, // 111100xxxxx00000xxxxx10110100000  xscvuxddp f0, f0
{            "xscvuxddp VSREG , FREG",{0xF00005A1,0x03E0F800}}, // 111100xxxxx00000xxxxx10110100001  xscvuxddp vs32, f0
{            "xscvuxddp FREG , VSREG",{0xF00005A2,0x03E0F800}}, // 111100xxxxx00000xxxxx10110100010  xscvuxddp f0, vs32
{           "xscvuxddp VSREG , VSREG",{0xF00005A3,0x03E0F800}}, // 111100xxxxx00000xxxxx10110100011  xscvuxddp vs32, vs32
{              "xsnabsdp FREG , FREG",{0xF00005A4,0x03E0F800}}, // 111100xxxxx00000xxxxx10110100100  xsnabsdp f0, f0
{             "xsnabsdp VSREG , FREG",{0xF00005A5,0x03E0F800}}, // 111100xxxxx00000xxxxx10110100101  xsnabsdp vs32, f0
{             "xsnabsdp FREG , VSREG",{0xF00005A6,0x03E0F800}}, // 111100xxxxx00000xxxxx10110100110  xsnabsdp f0, vs32
{            "xsnabsdp VSREG , VSREG",{0xF00005A7,0x03E0F800}}, // 111100xxxxx00000xxxxx10110100111  xsnabsdp vs32, vs32
{     "xsnmsubmdp FREG , FREG , FREG",{0xF00005C8,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx10111001000  xsnmsubmdp f0, f0, f0
{    "xsnmsubmdp VSREG , FREG , FREG",{0xF00005C9,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx10111001001  xsnmsubmdp vs32, f0, f0
{    "xsnmsubmdp FREG , FREG , VSREG",{0xF00005CA,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx10111001010  xsnmsubmdp f0, f0, vs32
{   "xsnmsubmdp VSREG , FREG , VSREG",{0xF00005CB,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx10111001011  xsnmsubmdp vs32, f0, vs32
{    "xsnmsubmdp FREG , VSREG , FREG",{0xF00005CC,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx10111001100  xsnmsubmdp f0, vs32, f0
{   "xsnmsubmdp VSREG , VSREG , FREG",{0xF00005CD,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx10111001101  xsnmsubmdp vs32, vs32, f0
{   "xsnmsubmdp FREG , VSREG , VSREG",{0xF00005CE,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx10111001110  xsnmsubmdp f0, vs32, vs32
{  "xsnmsubmdp VSREG , VSREG , VSREG",{0xF00005CF,0x03FFF800}}, // 111100xxxxxxxxxxxxxxx10111001111  xsnmsubmdp vs32, vs32, vs32
{             "xscvsxddp FREG , FREG",{0xF00005E0,0x03E0F800}}, // 111100xxxxx00000xxxxx10111100000  xscvsxddp f0, f0
{            "xscvsxddp VSREG , FREG",{0xF00005E1,0x03E0F800}}, // 111100xxxxx00000xxxxx10111100001  xscvsxddp vs32, f0
{            "xscvsxddp FREG , VSREG",{0xF00005E2,0x03E0F800}}, // 111100xxxxx00000xxxxx10111100010  xscvsxddp f0, vs32
{           "xscvsxddp VSREG , VSREG",{0xF00005E3,0x03E0F800}}, // 111100xxxxx00000xxxxx10111100011  xscvsxddp vs32, vs32
{               "xsnegdp FREG , FREG",{0xF00005E4,0x03E0F800}}, // 111100xxxxx00000xxxxx10111100100  xsnegdp f0, f0
{              "xsnegdp VSREG , FREG",{0xF00005E5,0x03E0F800}}, // 111100xxxxx00000xxxxx10111100101  xsnegdp vs32, f0
{              "xsnegdp FREG , VSREG",{0xF00005E6,0x03E0F800}}, // 111100xxxxx00000xxxxx10111100110  xsnegdp f0, vs32
{             "xsnegdp VSREG , VSREG",{0xF00005E7,0x03E0F800}}, // 111100xxxxx00000xxxxx10111100111  xsnegdp vs32, vs32
{     "xvmaxsp VSREG , VSREG , VSREG",{0xF0000600,0x03FFF807}}, // 111100xxxxxxxxxxxxxxx11000000xxx  xvmaxsp vs0, vs0, vs0
{  "xvnmaddasp VSREG , VSREG , VSREG",{0xF0000608,0x03FFF807}}, // 111100xxxxxxxxxxxxxxx11000001xxx  xvnmaddasp vs0, vs0, vs0
{ "xvcmpeqsp . VSREG , VSREG , VSREG",{0xF0000618,0x03FFF807}}, // 111100xxxxxxxxxxxxxxx11000011xxx  xvcmpeqsp. vs0, vs0, vs0
{          "xvcvspuxds VSREG , VSREG",{0xF0000620,0x03E0F803}}, // 111100xxxxx00000xxxxx110001000xx  xvcvspuxds vs0, vs0
{            "xvcvdpsp VSREG , VSREG",{0xF0000624,0x03E0F803}}, // 111100xxxxx00000xxxxx110001001xx  xvcvdpsp vs0, vs0
{     "xvminsp VSREG , VSREG , VSREG",{0xF0000640,0x03FFF807}}, // 111100xxxxxxxxxxxxxxx11001000xxx  xvminsp vs0, vs0, vs0
{  "xvnmaddmsp VSREG , VSREG , VSREG",{0xF0000648,0x03FFF807}}, // 111100xxxxxxxxxxxxxxx11001001xxx  xvnmaddmsp vs0, vs0, vs0
{ "xvcmpgtsp . VSREG , VSREG , VSREG",{0xF0000658,0x03FFF807}}, // 111100xxxxxxxxxxxxxxx11001011xxx  xvcmpgtsp. vs0, vs0, vs0
{          "xvcvspsxds VSREG , VSREG",{0xF0000660,0x03E0F803}}, // 111100xxxxx00000xxxxx110011000xx  xvcvspsxds vs0, vs0
{             "xvabssp VSREG , VSREG",{0xF0000664,0x03E0F803}}, // 111100xxxxx00000xxxxx110011001xx  xvabssp vs0, vs0
{             "xvmovsp VSREG , VSREG",{0xF0000680,0x03FFF807}}, // 111100xxxxxxxxxxxxxxx11010000xxx  xvmovsp vs0, vs0
{   "xvcpsgnsp VSREG , VSREG , VSREG",{0xF0000682,0x03FFF807}}, // 111100xxxxxxxxxxxxxxx11010000xxx  xvcpsgnsp vs0, vs0, vs32
{  "xvnmsubasp VSREG , VSREG , VSREG",{0xF0000688,0x03FFF807}}, // 111100xxxxxxxxxxxxxxx11010001xxx  xvnmsubasp vs0, vs0, vs0
{ "xvcmpgesp . VSREG , VSREG , VSREG",{0xF0000698,0x03FFF807}}, // 111100xxxxxxxxxxxxxxx11010011xxx  xvcmpgesp. vs0, vs0, vs0
{           "xvcvuxdsp VSREG , VSREG",{0xF00006A0,0x03E0F803}}, // 111100xxxxx00000xxxxx110101000xx  xvcvuxdsp vs0, vs0
{            "xvnabssp VSREG , VSREG",{0xF00006A4,0x03E0F803}}, // 111100xxxxx00000xxxxx110101001xx  xvnabssp vs0, vs0
{  "xvnmsubmsp VSREG , VSREG , VSREG",{0xF00006C8,0x03FFF807}}, // 111100xxxxxxxxxxxxxxx11011001xxx  xvnmsubmsp vs0, vs0, vs0
{           "xvcvsxdsp VSREG , VSREG",{0xF00006E0,0x03E0F803}}, // 111100xxxxx00000xxxxx110111000xx  xvcvsxdsp vs0, vs0
{             "xvnegsp VSREG , VSREG",{0xF00006E4,0x03E0F803}}, // 111100xxxxx00000xxxxx110111001xx  xvnegsp vs0, vs0
{     "xvmaxdp VSREG , VSREG , VSREG",{0xF0000700,0x03FFF807}}, // 111100xxxxxxxxxxxxxxx11100000xxx  xvmaxdp vs0, vs0, vs0
{  "xvnmaddadp VSREG , VSREG , VSREG",{0xF0000708,0x03FFF807}}, // 111100xxxxxxxxxxxxxxx11100001xxx  xvnmaddadp vs0, vs0, vs0
{ "xvcmpeqdp . VSREG , VSREG , VSREG",{0xF0000718,0x03FFF807}}, // 111100xxxxxxxxxxxxxxx11100011xxx  xvcmpeqdp. vs0, vs0, vs0
{          "xvcvdpuxds VSREG , VSREG",{0xF0000720,0x03E0F803}}, // 111100xxxxx00000xxxxx111001000xx  xvcvdpuxds vs0, vs0
{            "xvcvspdp VSREG , VSREG",{0xF0000724,0x03E0F803}}, // 111100xxxxx00000xxxxx111001001xx  xvcvspdp vs0, vs0
{     "xvmindp VSREG , VSREG , VSREG",{0xF0000740,0x03FFF807}}, // 111100xxxxxxxxxxxxxxx11101000xxx  xvmindp vs0, vs0, vs0
{  "xvnmaddmdp VSREG , VSREG , VSREG",{0xF0000748,0x03FFF807}}, // 111100xxxxxxxxxxxxxxx11101001xxx  xvnmaddmdp vs0, vs0, vs0
{ "xvcmpgtdp . VSREG , VSREG , VSREG",{0xF0000758,0x03FFF807}}, // 111100xxxxxxxxxxxxxxx11101011xxx  xvcmpgtdp. vs0, vs0, vs0
{          "xvcvdpsxds VSREG , VSREG",{0xF0000760,0x03E0F803}}, // 111100xxxxx00000xxxxx111011000xx  xvcvdpsxds vs0, vs0
{             "xvabsdp VSREG , VSREG",{0xF0000764,0x03E0F803}}, // 111100xxxxx00000xxxxx111011001xx  xvabsdp vs0, vs0
{             "xvmovdp VSREG , VSREG",{0xF0000780,0x03FFF807}}, // 111100xxxxxxxxxxxxxxx11110000xxx  xvmovdp vs0, vs0
{   "xvcpsgndp VSREG , VSREG , VSREG",{0xF0000782,0x03FFF807}}, // 111100xxxxxxxxxxxxxxx11110000xxx  xvcpsgndp vs0, vs0, vs32
{  "xvnmsubadp VSREG , VSREG , VSREG",{0xF0000788,0x03FFF807}}, // 111100xxxxxxxxxxxxxxx11110001xxx  xvnmsubadp vs0, vs0, vs0
{ "xvcmpgedp . VSREG , VSREG , VSREG",{0xF0000798,0x03FFF807}}, // 111100xxxxxxxxxxxxxxx11110011xxx  xvcmpgedp. vs0, vs0, vs0
{           "xvcvuxddp VSREG , VSREG",{0xF00007A0,0x03E0F803}}, // 111100xxxxx00000xxxxx111101000xx  xvcvuxddp vs0, vs0
{            "xvnabsdp VSREG , VSREG",{0xF00007A4,0x03E0F803}}, // 111100xxxxx00000xxxxx111101001xx  xvnabsdp vs0, vs0
{  "xvnmsubmdp VSREG , VSREG , VSREG",{0xF00007C8,0x03FFF807}}, // 111100xxxxxxxxxxxxxxx11111001xxx  xvnmsubmdp vs0, vs0, vs0
{           "xvcvsxddp VSREG , VSREG",{0xF00007E0,0x03E0F803}}, // 111100xxxxx00000xxxxx111111000xx  xvcvsxddp vs0, vs0
{             "xvnegdp VSREG , VSREG",{0xF00007E4,0x03E0F803}}, // 111100xxxxx00000xxxxx111111001xx  xvnegdp vs0, vs0
{             "std GPR , NUM ( NUM )",{0xF8000000,0x03E0FFFC}}, // 111110xxxxx00000xxxxxxxxxxxxxx00  std r0, 0(0)
{            "stdu GPR , NUM ( NUM )",{0xF8000001,0x03E0FFFC}}, // 111110xxxxx00000xxxxxxxxxxxxxx01  stdu r0, 0(0)
{             "std GPR , NUM ( GPR )",{0xF8010000,0x03FFFFFC}}, // 111110xxxxxxxxxxxxxxxxxxxxxxxx00  std r0, 0(r1)
{            "stdu GPR , NUM ( GPR )",{0xF8010001,0x03FFFFFC}}, // 111110xxxxxxxxxxxxxxxxxxxxxxxx01  stdu r0, 0(r1)
{          "fcmpu CREG , FREG , FREG",{0xFC000000,0x039FF800}}, // 111111xxx00xxxxxxxxxx00000000000  fcmpu cr0, f0, f0
{         "fcpsgn FREG , FREG , FREG",{0xFC000010,0x03FFF800}}, // 111111xxxxxxxxxxxxxxx00000010000  fcpsgn f0, f0, f0
{       "fcpsgn . FREG , FREG , FREG",{0xFC000011,0x03FFF800}}, // 111111xxxxxxxxxxxxxxx00000010001  fcpsgn. f0, f0, f0
{                  "frsp FREG , FREG",{0xFC000018,0x03E0F800}}, // 111111xxxxx00000xxxxx00000011000  frsp f0, f0
{                "frsp . FREG , FREG",{0xFC000019,0x03E0F800}}, // 111111xxxxx00000xxxxx00000011001  frsp. f0, f0
{                 "fctiw FREG , FREG",{0xFC00001C,0x03E0F800}}, // 111111xxxxx00000xxxxx00000011100  fctiw f0, f0
{               "fctiw . FREG , FREG",{0xFC00001D,0x03E0F800}}, // 111111xxxxx00000xxxxx00000011101  fctiw. f0, f0
{                "fctiwz FREG , FREG",{0xFC00001E,0x03E0F800}}, // 111111xxxxx00000xxxxx00000011110  fctiwz f0, f0
{              "fctiwz . FREG , FREG",{0xFC00001F,0x03E0F800}}, // 111111xxxxx00000xxxxx00000011111  fctiwz. f0, f0
{           "fdiv FREG , FREG , FREG",{0xFC000024,0x03FFF800}}, // 111111xxxxxxxxxxxxxxx00000100100  fdiv f0, f0, f0
{         "fdiv . FREG , FREG , FREG",{0xFC000025,0x03FFF800}}, // 111111xxxxxxxxxxxxxxx00000100101  fdiv. f0, f0, f0
{           "fsub FREG , FREG , FREG",{0xFC000028,0x03FFF800}}, // 111111xxxxxxxxxxxxxxx00000101000  fsub f0, f0, f0
{         "fsub . FREG , FREG , FREG",{0xFC000029,0x03FFF800}}, // 111111xxxxxxxxxxxxxxx00000101001  fsub. f0, f0, f0
{           "fadd FREG , FREG , FREG",{0xFC00002A,0x03FFF800}}, // 111111xxxxxxxxxxxxxxx00000101010  fadd f0, f0, f0
{         "fadd . FREG , FREG , FREG",{0xFC00002B,0x03FFF800}}, // 111111xxxxxxxxxxxxxxx00000101011  fadd. f0, f0, f0
{                 "fsqrt FREG , FREG",{0xFC00002C,0x03E0F800}}, // 111111xxxxx00000xxxxx00000101100  fsqrt f0, f0
{               "fsqrt . FREG , FREG",{0xFC00002D,0x03E0F800}}, // 111111xxxxx00000xxxxx00000101101  fsqrt. f0, f0
{    "fsel FREG , FREG , FREG , FREG",{0xFC00002E,0x03FFFFC0}}, // 111111xxxxxxxxxxxxxxxxxxxx101110  fsel f0, f0, f0, f0
{  "fsel . FREG , FREG , FREG , FREG",{0xFC00002F,0x03FFFFC0}}, // 111111xxxxxxxxxxxxxxxxxxxx101111  fsel. f0, f0, f0, f0
{                   "fre FREG , FREG",{0xFC000030,0x03E0F800}}, // 111111xxxxx00000xxxxx00000110000  fre f0, f0
{                 "fre . FREG , FREG",{0xFC000031,0x03E0F800}}, // 111111xxxxx00000xxxxx00000110001  fre. f0, f0
{           "fmul FREG , FREG , FREG",{0xFC000032,0x03FF07C0}}, // 111111xxxxxxxxxx00000xxxxx110010  fmul f0, f0, f0
{         "fmul . FREG , FREG , FREG",{0xFC000033,0x03FF07C0}}, // 111111xxxxxxxxxx00000xxxxx110011  fmul. f0, f0, f0
{               "frsqrte FREG , FREG",{0xFC000034,0x03E0F800}}, // 111111xxxxx00000xxxxx00000110100  frsqrte f0, f0
{             "frsqrte . FREG , FREG",{0xFC000035,0x03E0F800}}, // 111111xxxxx00000xxxxx00000110101  frsqrte. f0, f0
{   "fmsub FREG , FREG , FREG , FREG",{0xFC000038,0x03FFFFC0}}, // 111111xxxxxxxxxxxxxxxxxxxx111000  fmsub f0, f0, f0, f0
{ "fmsub . FREG , FREG , FREG , FREG",{0xFC000039,0x03FFFFC0}}, // 111111xxxxxxxxxxxxxxxxxxxx111001  fmsub. f0, f0, f0, f0
{   "fmadd FREG , FREG , FREG , FREG",{0xFC00003A,0x03FFFFC0}}, // 111111xxxxxxxxxxxxxxxxxxxx111010  fmadd f0, f0, f0, f0
{ "fmadd . FREG , FREG , FREG , FREG",{0xFC00003B,0x03FFFFC0}}, // 111111xxxxxxxxxxxxxxxxxxxx111011  fmadd. f0, f0, f0, f0
{  "fnmsub FREG , FREG , FREG , FREG",{0xFC00003C,0x03FFFFC0}}, // 111111xxxxxxxxxxxxxxxxxxxx111100  fnmsub f0, f0, f0, f0
{"fnmsub . FREG , FREG , FREG , FREG",{0xFC00003D,0x03FFFFC0}}, // 111111xxxxxxxxxxxxxxxxxxxx111101  fnmsub. f0, f0, f0, f0
{  "fnmadd FREG , FREG , FREG , FREG",{0xFC00003E,0x03FFFFC0}}, // 111111xxxxxxxxxxxxxxxxxxxx111110  fnmadd f0, f0, f0, f0
{"fnmadd . FREG , FREG , FREG , FREG",{0xFC00003F,0x03FFFFC0}}, // 111111xxxxxxxxxxxxxxxxxxxx111111  fnmadd. f0, f0, f0, f0
{                        "mtfsb1 NUM",{0xFC00004C,0x03E00000}}, // 111111xxxxx000000000000001001100  mtfsb1 0
{                  "fneg FREG , FREG",{0xFC000050,0x03E0F800}}, // 111111xxxxx00000xxxxx00001010000  fneg f0, f0
{                "fneg . FREG , FREG",{0xFC000051,0x03E0F800}}, // 111111xxxxx00000xxxxx00001010001  fneg. f0, f0
{                        "mtfsb0 NUM",{0xFC00008C,0x03E00000}}, // 111111xxxxx000000000000010001100  mtfsb0 0
{                   "fmr FREG , FREG",{0xFC000090,0x03E0F800}}, // 111111xxxxx00000xxxxx00010010000  fmr f0, f0
{                 "fmr . FREG , FREG",{0xFC000091,0x03E0F800}}, // 111111xxxxx00000xxxxx00010010001  fmr. f0, f0
{                 "fnabs FREG , FREG",{0xFC000110,0x03E0F800}}, // 111111xxxxx00000xxxxx00100010000  fnabs f0, f0
{               "fnabs . FREG , FREG",{0xFC000111,0x03E0F800}}, // 111111xxxxx00000xxxxx00100010001  fnabs. f0, f0
{               "fctiwuz FREG , FREG",{0xFC00011E,0x03E0F800}}, // 111111xxxxx00000xxxxx00100011110  fctiwuz f0, f0
{             "fctiwuz . FREG , FREG",{0xFC00011F,0x03E0F800}}, // 111111xxxxx00000xxxxx00100011111  fctiwuz. f0, f0
{                  "fabs FREG , FREG",{0xFC000210,0x03E0F800}}, // 111111xxxxx00000xxxxx01000010000  fabs f0, f0
{                "fabs . FREG , FREG",{0xFC000211,0x03E0F800}}, // 111111xxxxx00000xxxxx01000010001  fabs. f0, f0
{                  "frin FREG , FREG",{0xFC000310,0x03E0F800}}, // 111111xxxxx00000xxxxx01100010000  frin f0, f0
{                "frin . FREG , FREG",{0xFC000311,0x03E0F800}}, // 111111xxxxx00000xxxxx01100010001  frin. f0, f0
{                  "friz FREG , FREG",{0xFC000350,0x03E0F800}}, // 111111xxxxx00000xxxxx01101010000  friz f0, f0
{                "friz . FREG , FREG",{0xFC000351,0x03E0F800}}, // 111111xxxxx00000xxxxx01101010001  friz. f0, f0
{                  "frip FREG , FREG",{0xFC000390,0x03E0F800}}, // 111111xxxxx00000xxxxx01110010000  frip f0, f0
{                "frip . FREG , FREG",{0xFC000391,0x03E0F800}}, // 111111xxxxx00000xxxxx01110010001  frip. f0, f0
{                  "frim FREG , FREG",{0xFC0003D0,0x03E0F800}}, // 111111xxxxx00000xxxxx01111010000  frim f0, f0
{                "frim . FREG , FREG",{0xFC0003D1,0x03E0F800}}, // 111111xxxxx00000xxxxx01111010001  frim. f0, f0
{                         "mffs FREG",{0xFC00048E,0x03E00000}}, // 111111xxxxx000000000010010001110  mffs f0
{                  "mtfsf NUM , FREG",{0xFC00058E,0x01FEF800}}, // 1111110xxxxxxxx0xxxxx10110001110  mtfsf 0, f0
{                 "fctid FREG , FREG",{0xFC00065C,0x03E0F800}}, // 111111xxxxx00000xxxxx11001011100  fctid f0, f0
{               "fctid . FREG , FREG",{0xFC00065D,0x03E0F800}}, // 111111xxxxx00000xxxxx11001011101  fctid. f0, f0
{                "fctidz FREG , FREG",{0xFC00065E,0x03E0F800}}, // 111111xxxxx00000xxxxx11001011110  fctidz f0, f0
{              "fctidz . FREG , FREG",{0xFC00065F,0x03E0F800}}, // 111111xxxxx00000xxxxx11001011111  fctidz. f0, f0
{                 "fcfid FREG , FREG",{0xFC00069C,0x03E0F800}}, // 111111xxxxx00000xxxxx11010011100  fcfid f0, f0
{               "fcfid . FREG , FREG",{0xFC00069D,0x03E0F800}}, // 111111xxxxx00000xxxxx11010011101  fcfid. f0, f0
{               "fctiduz FREG , FREG",{0xFC00075E,0x03E0F800}}, // 111111xxxxx00000xxxxx11101011110  fctiduz f0, f0
{             "fctiduz . FREG , FREG",{0xFC00075F,0x03E0F800}}, // 111111xxxxx00000xxxxx11101011111  fctiduz. f0, f0
{                "fcfidu FREG , FREG",{0xFC00079C,0x03E0F800}}, // 111111xxxxx00000xxxxx11110011100  fcfidu f0, f0
{              "fcfidu . FREG , FREG",{0xFC00079D,0x03E0F800}}, // 111111xxxxx00000xxxxx11110011101  fcfidu. f0, f0
};

/*****************************************************************************/
/* capstone */
/*****************************************************************************/
const char *cs_err_to_string(cs_err e)
{
	switch(e) {
		case CS_ERR_OK: return "CS_ERR_OK";
		case CS_ERR_MEM: return "CS_ERR_MEM";
		case CS_ERR_ARCH: return "CS_ERR_ARCH";
		case CS_ERR_HANDLE: return "CS_ERR_HANDLE";
		case CS_ERR_CSH: return "CS_ERR_CSH";
		case CS_ERR_MODE: return "CS_ERR_MODE";
		case CS_ERR_OPTION: return "CS_ERR_OPTION";
		case CS_ERR_DETAIL: return "CS_ERR_DETAIL";
		case CS_ERR_MEMSETUP: return "CS_ERR_MEMSETUP";
		case CS_ERR_VERSION: return "CS_ERR_VERSION";
		case CS_ERR_DIET: return "CS_ERR_DIET";
		case CS_ERR_SKIPDATA: return "CS_ERR_SKIPDATA";
		case CS_ERR_X86_ATT: return "CS_ERR_X86_ATT";
		case CS_ERR_X86_INTEL: return "CS_ERR_X86_INTEL";
		default: return "WTF";
	}
}

int disasm_binja(uint8_t *data, uint32_t addr, string& result, string& err)
{
	return disassemble(data, addr, result);
}

int disasm_capstone(uint8_t *data, uint32_t addr, string& result, string& err)
{
#ifndef ENABLE_CAPSTONE
	return -1;
#endif
	int rc = -1;
	static bool init = false;

	/* capstone vars */
	static csh handle;
	cs_insn *insn = NULL;
	size_t count = 0;

	if (!init) {
		/* initialize capstone handle */
		cs_mode mode = (cs_mode)(CS_MODE_LITTLE_ENDIAN);

		if(cs_open(CS_ARCH_PPC, mode, &handle) != CS_ERR_OK) {
			MYLOG("ERROR: cs_open()\n");
			goto cleanup;
		}
		init = true;
	}

	count = cs_disasm(handle, data,
		/* code_size */ 4,
		/* address */ addr,
		/* instr count */ 1,
		/* result */ &insn
	);

	if(count != 1) {
		cs_err e = cs_errno(handle);

		if(e == CS_ERR_OK) {
			result = "undefined";
		}
		else {
			char msg[128];
			snprintf(
				msg, sizeof(msg), "ERROR: cs_disasm() returned %zu cs_err=%d (%s)\n", count, e, cs_err_to_string(e));
			err = msg;
			goto cleanup;
		}
	}
	else {
		result = insn->mnemonic;
		result += " ";
		result += insn->op_str;
	}

	rc = 0;
	cleanup:
	if(insn) cs_free(insn, count);
	return rc;
}

/*****************************************************************************/
/* instruction tokenizing */
/*****************************************************************************/

enum t_type
{
	TT_GPR = 1,
	TT_VREG = 2,
	TT_FLAG = 3,
	TT_CREG = 4,
	TT_VSREG = 5,
	TT_FREG = 6,
	TT_NUM = 7,
	TT_PUNC = 8,
	TT_OPC = 9,
};
struct token {
	t_type type;
	uint32_t ival;
	string sval;
};

int tokenize(string src, vector<token>& result, string& err)
{
	int rc = -1, n=0;
	char *endptr;
	const char *inbuf = src.c_str();

	result.clear();

	/* grab opcode */
	while(isalnum(inbuf[n]))
		n++;
	result.push_back({TT_OPC, 0, string(inbuf, n)});
	inbuf += n;

	/* loop over the rest */
	while(inbuf[0]) {
		char c = inbuf[0];
		char d = inbuf[1];

		/* skip spaces */
		if(c == ' ') {
			inbuf += 1;
		}
		/* GPR's */
		else if(c=='r') {
			uint32_t value = strtoul(inbuf+1, &endptr, 10);
			result.push_back({TT_GPR, value, ""});
			inbuf = endptr;
		}
		/* vs registers */
		else if(c=='v' && inbuf[1]=='s') {
			uint32_t value = strtoul(inbuf+2, &endptr, 10);
			result.push_back({TT_VSREG, value, ""});
			inbuf = endptr;
		}
		/* v registers */
		else if(c=='v') {
			uint32_t value = strtoul(inbuf+1, &endptr, 10);
			result.push_back({TT_VREG, value, ""});
			inbuf = endptr;
		}
		/* f registers */
		else if(c=='f') {
			uint32_t value = strtoul(inbuf+1, &endptr, 10);
			result.push_back({TT_FREG, value, ""});
			inbuf = endptr;
		}
		/* cr registers */
		else if(c=='c' && inbuf[1]=='r') {
			uint32_t value = strtoul(inbuf+2, &endptr, 10);
			result.push_back({TT_CREG, value, ""});
			inbuf = endptr;
		}
		/* FLAGS: lt, gt, eq, so */
		else if((c=='l' && d=='t') || (c=='g' && d=='t') ||
		  (c=='e' && d=='q') || (c=='s' && d=='o')) {

			result.push_back({TT_FLAG, 0, string(inbuf, 2)});
			inbuf += 2;
		}
		/* hexadecimal immediates */
		else if((c=='0' && d=='x') || (c=='-' && d=='0' && inbuf[2]=='x')) {
			uint32_t value = strtoul(inbuf, &endptr, 16);
			result.push_back({TT_NUM, value, ""});
			inbuf = endptr;
		}
		/* decimal immediates */
		else if(isdigit(c) || (c=='-' && isdigit(d))) {
			uint32_t value = strtoul(inbuf, &endptr, 10);
			result.push_back({TT_NUM, value, ""});
			inbuf = endptr;
		}
		/* punctuation */
		else if(c=='(' || c==')' || c==',' || c=='.' || c=='*' || c=='+' || c=='-') {
			result.push_back({TT_PUNC, 0, string(inbuf,1)});
			inbuf += 1;
		}
		/* wtf? */
		else {
			err = "error at: " + string(inbuf) + " in " + src;
			goto cleanup;
		}
	}

	rc = 0;
	cleanup:
	return rc;
}

const char* token_type_tostr(int tt)
{
	switch(tt) {
		case TT_GPR: return "GPR";
		case TT_VREG: return "VREG";
		case TT_FLAG: return "FLAG";
		case TT_CREG: return "CREG";
		case TT_VSREG: return "VSREG";
		case TT_FREG: return "FREG";
		case TT_NUM: return "NUM";
		case TT_PUNC: return "PUNC";
		case TT_OPC: return "OPC";
	}
	return "ERR_RESOLVING_TOKEN_TYPE";
}

string tokens_to_signature(vector<token>& tokens)
{
	string result;
	for(unsigned i=0; i<tokens.size(); ++i) {
		if(i)
			result += " ";

		token t = tokens[i];

		switch(t.type) {
			case TT_GPR:
			case TT_VREG:
			case TT_CREG:
			case TT_FREG:
			case TT_VSREG:
			case TT_NUM:
			case TT_FLAG:
				result += token_type_tostr(t.type);
				break;
			case TT_PUNC:
			case TT_OPC:
				result += t.sval;
				break;
		}
	}

	return result;
}

void tokens_print(vector<token>& tokens)
{
	for(unsigned i=0; i<tokens.size(); ++i) {
		token t = tokens[i];

		switch(t.type) {
			case TT_GPR:
			case TT_VREG:
			case TT_CREG:
			case TT_FREG:
			case TT_VSREG:
			case TT_NUM:
			case TT_FLAG:
				printf("%s: %d\n", token_type_tostr(t.type), t.ival);
				break;
			case TT_PUNC:
			case TT_OPC:
				printf("%s: %s\n", token_type_tostr(t.type), t.sval.c_str());
				break;
		}
	}
}

/*****************************************************************************/
/* genetic */
/*****************************************************************************/

int count_bits(uint32_t x)
{
	x = x - ((x >> 1) & 0x55555555);
	x = (x & 0x33333333) + ((x >> 2) & 0x33333333);
	return ((((x + (x >> 4)) & 0x0F0F0F0F) * 0x01010101) >> 24);
}

float hamming_similar(int a, int b)
{
	return (32-count_bits(a ^ b)) / 32.0f;
}

float fitness(vector<token> dst, vector<token> src) {
	size_t n = dst.size();

	/* same number of tokens */
	if(n != src.size())
		return 0;

	/* */
	float score = 0;
	float scorePerToken = 100.0f / (float)n;

	/* for each token... */
	for(size_t i=0; i<n; ++i) {
		/* same type */
		if(src[i].type != dst[i].type)
			return 0;

		switch(src[i].type) {
			case TT_VREG:
			case TT_FREG:
			case TT_GPR:
			case TT_VSREG:
			case TT_CREG:
			case TT_NUM:
				score += hamming_similar(src[i].ival, dst[i].ival) * scorePerToken;
				break;
			/* opcodes and flags must string match */
			case TT_OPC:
			case TT_FLAG:
			case TT_PUNC:
				if(src[i].sval == dst[i].sval)
					score += scorePerToken;
				break;
			default:
				printf("ERROR!!!!\n");
		}
	}

	return score;
}

float score(vector<token> baseline, uint32_t newcomer, uint32_t addr)
{
	// return 0;
	vector<token> toks_child;
	string err;
	string src;

	if(disasm_capstone((uint8_t *)&newcomer, addr, src, err))
		return -1;

	/* compare mnemonics before doing more work */
	string mnem = baseline[0].sval;
	if(src.compare(0, mnem.size(), mnem) != 0) {
		return 0;
	}

	/* mnemonics are the same, tokenize now... */
	if(tokenize(src, toks_child, err)) {
		printf("ERROR: %s\n", err.c_str());
		return 0;
	}

	return fitness(baseline, toks_child);
}

float score_binja(vector<token> baseline, uint32_t newcomer, uint32_t addr)
{
	vector<token> toks_child;
	string err;
	string src;

	if(disasm_binja((uint8_t *)&newcomer, addr, src, err))
		return -1;

	/* compare mnemonics before doing more work */
	string mnem = baseline[0].sval;
	if(src.compare(0, mnem.size(), mnem) != 0) {
		// A few special case equivalences that it can't figure out on its own
		if (mnem == "rotrdi" && src.compare(0, 6, "rotldi") == 0)
		{
			if (tokenize("rotrdi" + src.substr(6), toks_child, err))
				return 0;
			toks_child.back().ival = 64 - toks_child.back().ival;
		}
		else if (mnem == "rldicl" && src.compare(0, 6, "rotldi") == 0)
		{
			if (tokenize("rldicl" + src.substr(6), toks_child, err))
				return 0;
			toks_child.push_back({TT_PUNC, 0, ","});
			toks_child.push_back({TT_NUM, 0, ""});
		}
		else if (mnem == "rldcl" && src.compare(0, 5, "rotld") == 0)
		{
			if (tokenize("rldcl" + src.substr(5), toks_child, err))
				return 0;
			toks_child.push_back({TT_PUNC, 0, ","});
			toks_child.push_back({TT_NUM, 0, ""});
		}
		else if (mnem == "rlwinm")
		{
			if (src.compare(0, 6, "clrrwi") == 0)
			{
				if (tokenize("rlwinm" + src.substr(6), toks_child, err))
					return 0;
				uint32_t me = toks_child.back().ival;
				toks_child.back().ival = 0;
				toks_child.push_back({TT_PUNC, 0, ","});
				toks_child.push_back({TT_NUM, 0, ""});
				toks_child.push_back({TT_PUNC, 0, ","});
				toks_child.push_back({TT_NUM, 31 - me, ""});
			}
			else if (src.compare(0, 6, "clrlwi") == 0)
			{
				if (tokenize("rlwinm" + src.substr(6), toks_child, err))
					return 0;
				uint32_t mb = toks_child.back().ival;
				toks_child.back().ival = 0;
				toks_child.push_back({TT_PUNC, 0, ","});
				toks_child.push_back({TT_NUM, mb, ""});
				toks_child.push_back({TT_PUNC, 0, ","});
				toks_child.push_back({TT_NUM, 31, ""});
			}
			else if (src.compare(0, 6, "rotlwi") == 0)
			{
				if (tokenize("rlwinm" + src.substr(6), toks_child, err))
					return 0;
				toks_child.push_back({TT_PUNC, 0, ","});
				toks_child.push_back({TT_NUM, 0, ""});
				toks_child.push_back({TT_PUNC, 0, ","});
				toks_child.push_back({TT_NUM, 31, ""});
			}
		}
		else
			return 0;
	}

	/* mnemonics are the same, tokenize now... */
	if(toks_child.size() == 0 && tokenize(src, toks_child, err)) {
		printf("ERROR: %s\n", err.c_str());
		return 0;
	}

	return fitness(baseline, toks_child);
}

struct match {
	uint32_t src_hi, src_lo; // source bit range
	uint32_t dst_hi, dst_lo; // destination bit range
};

// force certain regions of bits to match
uint32_t enforce_bit_match(uint32_t inp, unsigned bit, vector<match> matches)
{
	for(auto iter=matches.begin(); iter != matches.end(); ++iter) {
		struct match m = *iter;

		/* did we change a bit in the source region? */
		if(bit >= m.src_lo && bit <= m.src_hi) {
			/* compute masks */
			uint32_t a = 1<<m.src_hi;
			uint32_t b = 1<<m.src_lo;
			uint32_t src_mask = (a|(a-1)) ^ (b-1);

			a = 1<<m.dst_hi;
			b = 1<<m.dst_lo;
			uint32_t dst_mask = (a|(a-1)) ^ (b-1);

			/* mask and shift */
			inp = (inp & (~dst_mask));
			if(m.src_hi > m.dst_hi) {
				inp |= ((inp & src_mask) >> (m.src_hi - m.dst_hi));
			}
			else {
				inp |= ((inp & src_mask) << (m.dst_hi - m.src_hi));
			}
		}
	}

	return inp;
}

// for certain instructions with difficult inter-field dependencies
// inputs:
//     seed: the seed value that may need the special case
//  insword: instruction word
//      bit: last bit changed
uint32_t special_handling(uint32_t seed, uint32_t insword, int bit, vector<token> baseline)
{
	switch(seed) {
		/* sldi is extended mnemonic for rldicr (when mask = 63-shift) and hops
			to it or other extended mnemonics easily */
		case 0x780007C6:
		// case 0x780007C4:
		case 0x780007C7:
		// case 0x780007C5:
			/* if shift field changed, update mask */
			if(bit==1 || (bit>=11 && bit<=15)) {
				uint32_t shift = ((insword>>1)&1) | ((insword>>10)&0x3E);
				uint32_t mask = 63-shift;
				return (insword&0xFFFFF81F) | (mask<<5);
			}
			/* if mask field changed, update shift */
			if(bit>=5 && bit<=10) {
				uint32_t mask = (insword>>5)&0x3F;
				uint32_t shift = 63-mask;
				return (insword&0xFFFF07FD) | ((shift&0x3E)<<11) | ((shift&0x1)<<1);
			}
			/* neither field updated */
			return insword;
		// case 0x780007C6:
		case 0x780007C4:
		// case 0x780007C7:
		case 0x780007C5:
			/* if shift field changed, update mask */
			if(bit==1 || (bit>=11 && bit<=15)) {
				uint32_t shift = ((insword>>1)&1) | ((insword>>10)&0x3E);
				uint32_t mask = 64-shift;
				return (insword&0xFFFFF81F) | (mask<<5);
			}
			/* if mask field changed, update shift */
			if(bit>=5 && bit<=10) {
				uint32_t mask = (insword>>5)&0x3F;
				uint32_t shift = 64-mask;
				return (insword&0xFFFF07FD) | ((shift&0x3E)<<11) | ((shift&0x1)<<1);
			}
			/* neither field updated */
			return insword;

		case 0x54000FFE: // srwi
			if(bit>=6 && bit<=10) {
				uint32_t tmp = 32 - ((insword>>6) & 0x1F);
				return (insword&0xFFFF07FF) | (tmp<<11);
			}
			if(bit>=11 && bit<=15) {
				uint32_t tmp = 32 - ((insword>>11) & 0x1F);
				return (insword&0xFFFFF83F) | (tmp<<6);
			}
			/* neither field updated */
			return insword;

		case 0x5400003E: // slwi
			if(bit>=1 && bit<=5) {
				uint32_t tmp = 31 - ((insword>>1) & 0x1F);
				return (insword&0xFFFF07FF) | (tmp<<11);
			}
			if(bit>=11 && bit<=15) {
				uint32_t tmp = 31 - ((insword>>11) & 0x1F);
				return (insword&0xFFFFFFC1) | (tmp<<1);
			}
			/* neither field updated */
			return insword;

		/* crclr is when crxor has three 5-bit fields match! unlikely! */
		case 0x4c000182:
		{
			vector<struct match> matches = {{25,21,20,16},{25,21,15,11},
											{20,16,25,21},{20,16,15,11},
											{15,11,25,21},{15,11,20,16}};

			return enforce_bit_match(insword, bit, matches);
		}

		/* xxpermdi is 111100xxxxxxxxxxxxxxx0xx01010xxx */
		// xxspltd T,A,0 <=> xxpermdi T,A,A,0b00
		// xxspltd T,A,1 <=> xxpermdi T,A,A,0b11
		// xxmrghd T,A,B <=> xxpermdi T,A,B,0b00
		// xxmrgld T,A,B <=> xxpermdi T,A,B,0b11
		// xxswapd T,A   <=> xxpermdi T,A,A,0b10

		/* xxspltd is extended mnemonic for xxpermdi (when A==B): */
		case 0xF0000050:
		{
			vector<struct match> matches = {{20,16,15,11},{15,11,20,19},{9,9,8,8},{8,8,9,9},{2,2,1,1},{1,1,2,2}};
			return enforce_bit_match(insword, bit, matches);
		}

		/* xvmovdp is extended mnemonic for something
			111100 AAAAA BBBBB CCCCC 11110000CBA
			require BBBBBB == CCCCCC */
		case 0xF0000250: // xxswapd
		case 0xF0000780: // xvmovdp
		case 0xF0000680: // xvmovsp
		{
			vector<struct match> matches = {{20,16,15,11},{15,11,20,19},{2,2,1,1},{1,1,2,2}};
			return enforce_bit_match(insword, bit, matches);
		}

		/* mr is extended mnemonic for or (when RS==RB): */
		case 0x7C000378:
		{
			vector<struct match> matches = {{25,21,15,11},{15,11,25,21}};
			return enforce_bit_match(insword, bit, matches);
		}

        /* tdi/twi so easily falls into extended mnemonics */
		case 0x0800000A: // tdi
		case 0x0C000000: // twi
			if(bit>=21 && bit<=25) {
				uint32_t foo, bar;
				foo = bar = (insword & 0x03E00000) >> 21;
				switch(foo) {
					case 1: foo=3; break; // get off tdlgti/twlgti
					case 2: foo=3; break; // get off tdllti/twllti
					case 4: foo=5; break; // get off tdeqi/tweqi
					case 8: foo=9; break; // get off tdgti/twgti
					case 16: foo=17; break; // get off tdlti/twlti
					case 24: foo=25; break; // get off tdnei/twnei
					case 63: foo=0; break; // get off tdui/twui
				}
				if(foo != bar)
					insword = (insword & 0xFC1FFFFF) | (foo << 21);
			}
			/* no bit change in sensitive region */
			return insword;

		default:
			return insword;
	}
}

/*****************************************************************************/
/* string processing crap */
/*****************************************************************************/

int split_newlines(const string& chunk, vector<string> &lines)
{
	lines.clear();

	const char *p = chunk.c_str();

	unsigned i=0, left=0;
	while(1) {
		if(p[i]=='\x00') {
			if(left < i) {
				lines.push_back(string(p,left,i-left));
			}

			break;
		}

		if(p[i]=='\x0a') {
			if(left < i) {
				lines.push_back(string(p,left,i-left));
			}

			left = i = (i+1);
		}
		else if(i+1 < chunk.size() && p[i]=='\x0d' && p[i+1]=='\x0a') {
			if(left < i) {
				lines.push_back(string(p,left,i-left));
			}

			left = i = (i+2);
		}
		else {
			i += 1;
		}
	}

	return 0;
}

int trim_lines(vector<string> &lines)
{
	vector<string> filtered;

	for(size_t i=0; i<lines.size(); ++i) {
		const char *p = lines[i].c_str();
		int left = 0, right = (int)lines[i].size()-1;

		while(isspace(p[left]))
			left += 1;

		while(right>=0 && isspace(p[right]))
			right -= 1;

		if(right >= left)
			filtered.push_back(string(p, left, right-left+1));
	}

	lines = filtered;

	return 0;
}

// \S - one or more spaces
// \s - zero or more spaces
// \H - hex number (captures)
// \I - identifier (captures)
// \X - anything
bool fmt_match(string fmt, string str, vector<string>& result)
{
	bool match = false;
	size_t i=0, j=0;
	size_t nfmt=fmt.size(), nstr=str.size();

	result.clear();
	while(1) {
		string fcode = fmt.substr(i,2);

		if(fcode=="\\S") {
			if(!isspace(str[j]))
				goto cleanup;
			while(isspace(str[j]))
				j += 1;
			i += 2;
		}
		else
		if(fcode=="\\s") {
			while(isspace(str[j]))
				j += 1;
			i += 2;
		}
		else
		if(fcode=="\\I") {
			if(!isalpha(str[j]))
				goto cleanup;
			size_t start = j;
			j += 1;
			while(isalnum(str[j]) || str[j]=='_')
				j += 1;
			result.push_back(str.substr(start, j-start));
			i += 2;
		}
		else
		if(fcode=="\\H") {
			const char *raw = str.c_str();
			char *endptr;
			strtoul(raw + j, &endptr, 16);
			size_t len = endptr - (raw+j);
			if(!len) goto cleanup;
			result.push_back(str.substr(j, len));
			i += 2;
			j += len;
		}
		else
		if(fcode=="\\X") {
			i += 2;
			j = nstr;
		}
		else
		if(fmt[i] == str[j]) {
			i += 1;
			j += 1;
		}
		else {
			goto cleanup;
		}

		if(i==nfmt && j==nstr) break;
	}

	match = true;
	cleanup:
	return match;
}

/*****************************************************************************/
/* assembler calls */
/*****************************************************************************/

#define FAILURES_LIMIT 10000


int assemble_single(string src, uint32_t addr, uint8_t *result, string& err,
  int& failures)
{
	int rc = -1;

	/* decompose instruction into tokens */
	vector<token> toks_src;
	vector<token> toks_child;

	if(tokenize(src, toks_src, err)) {
		err += "invalid syntax in " + src;
		return -1;
	}

	/* form signature, look it up */
	string sig_src = tokens_to_signature(toks_src);

	MYLOG("src:%s has signature:%s\n", src.c_str(), sig_src.c_str());

	auto it = lookup.find(sig_src);
	if(it == lookup.end()) {
		err = "invalid syntax in " + sig_src;
		return -1;
	}

	auto info = it->second;
	uint32_t vary_mask = info.mask;

	/* for relative branches, shift the target address to 0 */
	if(toks_src[0].sval[0]=='b' && toks_src[0].sval.back() != 'a' &&
	  toks_src.back().type == TT_NUM) {
		toks_src.back().ival -= addr;
		addr = 0;
	}
	else if(!strncmp("subis", toks_src[0].sval.c_str(), 6) &&
	  toks_src.back().type == TT_NUM) {
		toks_src.back().ival = -toks_src.back().ival;
		toks_src[0].sval = "addis";
	}
	else if(!strncmp("rotrwi", toks_src[0].sval.c_str(), 6) &&
	  toks_src.back().type == TT_NUM) {
		toks_src.back().ival = 32-toks_src.back().ival;
		toks_src[0].sval = "rotlwi";
	}

	/* start with the parent */
	uint32_t parent = info.seed;
	float init_score, top_score;
	init_score = top_score = max(score(toks_src, parent, addr),
		score_binja(toks_src, parent, addr));

	/* cache the xor masks */
	int n_flips = 0;
	int flipper_idx[32];
	uint32_t flipper[32];
	for(int i=0; i<32; ++i) {
		if(vary_mask & (1 << i)) {
			flipper_idx[n_flips] = i;
			flipper[n_flips++] = 1<<i;
		}
	}

	failures = 0;
	int failstreak = 0;

	/* vary the parent */
	int b1i=0;
	while(1) {
		/* winner? */
		if(top_score > 99.99) {
			MYLOG("%08X wins!\n", parent);
			memcpy(result, &parent, 4);
			break;
		}

		bool overtake = false;

		for(; b1i<n_flips; b1i = (b1i+1) % n_flips) {
			uint32_t child = parent ^ flipper[b1i];
			child = special_handling(info.seed, child, flipper_idx[b1i], toks_src);

			float s = max(score(toks_src, child, addr),
				score_binja(toks_src, child, addr));
			if(s > top_score) {
				parent = child;
				top_score = s;
				overtake = true;
				break;
			}

			failures++;
			if(failures > FAILURES_LIMIT) {
				MYLOG("failure limit reached, not assembling!\n");
				err = "cannot assemble, valid operands?";
				goto cleanup;
			}

			failstreak++;
			if(failstreak >= n_flips) {
				/* generate a new parent that's at least as good as the seed */
				while(1) {
					parent = info.seed;
					for(int i=0; i<n_flips; ++i) {
						if(rand()%2) {
							parent ^= flipper[i];
							parent = special_handling(info.seed, parent, flipper_idx[i], toks_src);
						}
					}
					top_score = max(score(toks_src, parent, addr),
						score_binja(toks_src, parent, addr));

					if(top_score >= init_score) {
						MYLOG("perturbing the parent to: %08X (score:%f) (vs:%f)\n", parent, top_score, init_score);
						break;
					}
					else {
#if DEBUG
						string tmp;
						disasm_capstone((uint8_t *)&parent, addr, tmp, err);
						MYLOG("%08X: %s perturb fail %f\n", parent, tmp.c_str(), top_score);
#endif
						failures++;
					}

					if(failures > FAILURES_LIMIT) {
						err = "cannot assemble, valid operands?";
						MYLOG("failure limit reached, not assembling!\n");
						goto cleanup;
					}
				}
				failstreak = 0;
				break;
			}
		}

		if(overtake) {
			failstreak = 0;
			if(0) {
				string tmp;
				disasm_capstone((uint8_t *)&parent, addr, tmp, err);
				MYLOG("%08X: %s overtakes with 1-bit flip (%d) after %d failures, score %f\n", parent, tmp.c_str(), b1i, failures, top_score);
			}
		}
	}

	rc = 0;
	cleanup:
	return rc;
}

int assemble_multiline(const string& code, vector<uint8_t>& result, string& err)
{
	int rc = -1;
	vector<string> lines, fields;

	split_newlines(code, lines);
	trim_lines(lines);

	bool lilEndian = false;

	uint64_t vaddr = 0;
	map<string,uint64_t> symbols;

	/* FIRST PASS */
	for(unsigned i=0; i<lines.size(); ++i) {
		MYLOG("line %d: -%s-\n", i, lines[i].c_str());

		/* .org directive */
		if(fmt_match(".org\\S\\H", lines[i], fields)) {
			vaddr = strtol(fields[0].c_str(), 0, 16);
			if(vaddr & 0x3) {
				err = "ERROR: .org address is not 4-byte aligned";
				goto cleanup;
			}
			MYLOG("PASS1, set vaddr to: %" PRIx64 "\n", vaddr);
		}
		/* .endian directive */
		else
		if(fmt_match(".endian\\S\\I", lines[i], fields)) {
			if(fields[0] == "big")
				lilEndian = false;
			else
			if(fields[0] == "little")
				lilEndian = true;
			else {
				err = "invalid argument to .endian directive (expected big or little)";
			}
		}
		/* .equ directive */
		else
		if(fmt_match(".equ\\S\\I\\s,\\s\\H", lines[i], fields)) {
			uint32_t value = strtol(fields[1].c_str(), 0, 16);
			symbols[fields[0]] = value;
			MYLOG("PASS1, set symbol %s: %08X\n", fields[0].c_str(), value);
		}
		/* labels */
		else
		if(fmt_match("\\I:", lines[i], fields)) {
			symbols[fields[0]] = vaddr;
			MYLOG("PASS1, set label %s: %" PRIx64 "\n", fields[0].c_str(), vaddr);
		}
	}

	/* SECOND PASS */
	vaddr = 0;
	for(unsigned i=0; i<lines.size(); ++i) {
		vector<string> fields;

		MYLOG("line %d: -%s-\n", i, lines[i].c_str());

		/* .org directive */
		if(fmt_match(".org\\S\\H", lines[i], fields)) {
			vaddr = strtol(fields[0].c_str(), 0, 16);
			MYLOG("set vaddr to: %" PRIx64 "\n", vaddr);
		}
		/* .endian directive */
		else
		if(fmt_match(".endian\\S\\I", lines[i], fields)) {
			if(fields[0] == "big")
				lilEndian = false;
			else
			if(fields[0] == "little")
				lilEndian = true;
			else {
				err = "invalid argument to .endian directive (expected big or little)";
			}
		}
		/* .equ directive */
		else
		if(fmt_match(".equ\\S\\I\\s,\\s\\H", lines[i], fields)) {

		}
		/* labels */
		else
		if(fmt_match("\\I:", lines[i], fields)) {

		}
		/* comments */
		else
		if(fmt_match("\\s//\\X", lines[i], fields)) {

		}
		/* instructions */
		else {
			uint8_t encoding[4];

			/* replace the last word (if it exists) with a label/symbol */
			string line = lines[i], token;
			int left = (int)line.size()-1;
			while(left>=0 && isalnum(line[left]))
				left--;
			left += 1;
			token = line.substr(left, line.size()-left);
			if(fmt_match("\\I", token, fields)) {
				if(symbols.find(token) != symbols.end()) {
					char buf[16];
					int64_t value = symbols[token];
					if(value < 0) {
						snprintf(buf, sizeof(buf), "-0x%08X", (unsigned)(-1 * value));
					}
					else {
						snprintf(buf, sizeof(buf), "0x%08X", (unsigned)value);
					}
					line.replace(left, line.size()-left, buf);
				}
				else {
					MYLOG("not found in symbol table\n");
				}
			}
			else {
				MYLOG("not an identifier\n");
			}

			/* now actually assemble */
			MYLOG("assembling: %s at address %" PRIx64 "\n", line.c_str(), vaddr);
			int failures;
			if(assemble_single(line, (uint32_t)vaddr, encoding, err, failures)) {
				MYLOG("assemble_single failed, err contains: %s\n", err.c_str());
				goto cleanup;
			}

			/* return results */
			if(lilEndian == true) {
				for(int i=0; i<4; ++i) {
					MYLOG("LILEND returning byte %02X\n", encoding[i]);
					result.push_back(encoding[i]);
				}
			}
			else {
				for(int i=3; i>=0; --i) {
					MYLOG("BIGEND returning byte %02X\n", encoding[i]);
					result.push_back(encoding[i]);
				}
			}

			/* next! */
			vaddr += 4;
		}
	}

	rc = 0;
	cleanup:
	return rc;
}


